IE все еще кэширует содержимое страницы в течение нескольких секунд, когда применяются мета-теги. Что делать? - PullRequest
1 голос
/ 22 сентября 2011

У меня есть сценарий, когда основной веб-сайт (который я не контролирую) загружает мой веб-сайт изнутри фрейма. Это GET с параметрами строки запроса, выбранными пользователем на основном веб-сайте. Проблема в том, что IE кэширует мою первую страницу внутри этого iframe.

Я применил следующие метатеги:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>

Но IE все еще кэширует его примерно на 15-20 секунд или около того. Так что, если пользователь быстро вернется на основной сайт и выберет что-то еще, он увидит кэшированную версию моей первой страницы. Что я могу сделать здесь?

1 Ответ

2 голосов
/ 22 сентября 2011

Попробуйте очистить кэш от сервера, установив соответствующие заголовки HTTP-ответа:

public class NoCacheAttribute : ActionFilterAttribute
{  
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        var cache = filterContext.HttpContext.Response.Cache;
        cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        cache.SetValidUntilExpires(false);
        cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        cache.SetCacheability(HttpCacheability.NoCache);
        cache.SetNoStore();
    }
}

и затем украсьте действие вашего контроллера, которое должно обслуживать <iframe>, с помощью этого атрибута:

[NoCache]
public ActionResult Foo()
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...