Cache-Control / max-age всегда равен 0 для анонимных пользователей - PullRequest
2 голосов
/ 22 июля 2009

Я включил blobcaching на сайте публикации.

Для аутентифицированных пользователей свойство max-age в заголовке HTTP Cache-Control установлено правильно в соответствии с настройкой в ​​элементе blobCache в web.config, для анонимных пользователей - 0 Это вызывает много 304 запросов от браузера, пытающегося увидеть, изменилось ли изображение, и отрицательно влияет на производительность. Это проблема только для файлов в "/ библиотеке стилей".

В блогах есть несколько упоминаний об этой проблеме, но решения пока не найдено. Можно ли как-то исправить это или принудительно установить этот заголовок другими способами? Я попытался реализовать обработчик HTTP, чтобы сделать это, но он по-прежнему отображается как 0.

1 Ответ

3 голосов
/ 03 августа 2009

Как было бы, если бы вы установили кэширование для всего сайта, а затем на страницах не хотели бы, чтобы анонимные пользователи получали кэшированный контент, вы добавляете что-то вроде этого в:

protected override void OnInit(EventArgs e)
{
    if (user.IsAnonymous())
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetNoStore();
        Response.Cache.SetExpires(DateTime.MinValue);
    }
    base.OnInit(e);
}

Который будет производить это:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Length: 15965
Content-Type: text/html; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Mon, 03 Aug 2009 01:07:26 GMT

Это должно привести к тому, что веб-страница не будет кэшироваться, но какое бы кэширование ни применялось к изображениям, CSS, JS и т. Д. Должно остаться. Если к изображениям не применяются к ним заголовки кэширования, то, похоже, вам придется написать собственный обработчик http, чтобы перехватить запрос к этим изображениям, а затем применить правильные заголовки кэширования вместе с настройкой для каждой страницы, какие страницы Вы не хотите кэшироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...