2012-03-27 2 views
0

У меня есть несколько разовый сценарий для сайта, над которым я работаю.Выходное кэширование IIS 7 для модулей

Я направляю определенные пути запроса к настраиваемому HTTP-модулю, который динамически выводит «статический» контент. Под этим я имею в виду контент javascript и css. Тем не менее, этот контент генерируется динамически модулем, но после его создания не меняется очень часто.

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

Если я просматриваю URL-адрес с помощью Firefox, похоже, работает кеширование локального браузера. Браузер использует то, что он кэшировал локально, и не делает запрос на сервер.

Однако, если я нажимаю F5 на странице, браузер пытается повторно извлечь файл с сервера, а затем сервер перенаправляет его в модуль, регенерирует контент и, по сути, служит ему свежим. Я ожидал бы, что IIS вместо этого вернет 304 клиенту или будет обслуживать содержимое из кеша и полностью не вызывать модуль.

модуль, кажется, возвращаются правильные заголовки кэша:

http://www.mydomain.com/SpecialPath/File_17aa85bf3bf430066a0524787be6af7b9363c8ae.js

Cache-Control общественности, Макс возраст = 1800

Content-Encoding GZIP

Content-Length 60568

Приложение типа контента/x-javascript; кодировка = UTF-8

Дата Вт, 27 марта 2012 20:25:42 GMT

Etag 17aa85bf3bf430066a0524787be6af7b9363c8ae

Last-Modified Вт, 27 марта 2012 20:25:43 GMT

сервера Microsoft-IIS/7.5

Варах Accept-Encoding

X-Сеть САШ-версии 4.0.30319

Когда я использую F5 заголовки запросов браузера также, кажется, OK:

Cache-Control максимального возраста = 0

If-Modified-Since Tue, 27 Mar 2012 20:25:21 GMT

If-None-Match 17aa85bf3bf430066a0524787be6af7b9363c8ae

Однако, если установить точку останова, я вижу запрос передается через к модулю.

304 никогда не возвращается, и ни один из них никогда не подается из выходного кеша.

Нужно ли делать что-либо дополнительное или специальное для получения кэширования вывода для кэширования содержимого, возвращаемого из пользовательского модуля?

Возможно, что-то случилось с моими заголовками?

ответ

2

Last-Modified Вт, 27 марта 2012 20:25:43 GMT If-Modified-Since Tue, 27 марта 2012 20:25:21 GMT

Ресурс изменен 22 секунд после того, как значения IMS, поэтому 304 не возвращается