Почему мои aspx страницы не кэшируют на клиенте?

У меня есть динамично сгенерированный файл CSS. Это является довольно большим, и имеет другое содержание для различных браузеров. Это изменяется очень редко.

Таким образом наверху .aspx страница я имею:

<%@ OutputCache Duration="86400" 
                Location="ServerAndClient" 
                VaryByParam="none" 
                VaryByCustom="browser" %>

У меня есть подобная директива против действий MVC, которые генерируют динамические изображения:

[OutputCache(Duration = 86400, 
             VaryByParam = "none", 
             Location = OutputCacheLocation.ServerAndClient)] 

Это должно привести к файлу, кэшируемому на сервере и клиенте (но не промежуточные прокси) в течение дня.

Заголовки ответа, кажется, корректны:

HTTP/1.1 200 OK
Cache-Control: private, max-age=83831
Content-Type: text/css; charset=utf-8
Expires: Wed, 09 Jun 2010 08:52:45 GMT
Last-Modified: Tue, 08 Jun 2010 08:52:45 GMT
Vary: *
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Tue, 08 Jun 2010 09:35:34 GMT
Content-Length: 70073

Серверные работы кэширования - дальнейшие запросы не выполняют код снова.

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

Почему браузер запрашивает содержание снова?

Во-вторых, когда сервер просят относительно содержания снова, это возвращает HTTP 200 наряду со всем содержанием. Это должно возвратить HTTP 304, Не Измененный без тела - сообщение браузера к повторному использованию, что это уже загрузило.

Как я удостоверяюсь, что это возвращает HTTP 304, когда содержание не изменилось?

5
задан Keith 8 June 2010 в 09:44
поделиться

1 ответ

1) Vary: * приведет к тому, что некоторые браузеры, например IE, не будут кэшироваться. Vary: User-Agent может работать лучше (не уверен).

2) WRT 200 vs 304: посылает ли клиент заголовок If-*?

5
ответ дан 14 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: