Должен ли я установить заголовок Cache-Control при обслуживании файлов? Или нет? - PullRequest
7 голосов
/ 05 марта 2010

Я подаю некоторые файлы через HTTPModule в asp.net. Я хочу знать, есть ли какие-либо преимущества в настройке или отсутствии настройки заголовка Cache-Control для чего-либо (например, no-cache)?

Редактировать: Причина, по которой меня это интересует, заключается в том, что мы столкнулись с проблемой, когда обработка офисных документов через сеанс SSL в IE приводит к ошибке (если для элемента управления кэшем установлено значение no- кэш). То есть вы не можете загружать офисные документы через SSL в IE, если для Cache-Control установлено значение no-cache.

По сути, я не хочу включать заголовок Cache-Control, но задаюсь вопросом, не вызовет ли это проблемы?

Редактировать 2: Ну, заголовок Cache-Control отсутствует. Я попробовал предложения ниже, но у меня были некоторые проблемы. Каждый раз, когда я добавляю заголовок expires или вообще меняю Cache-Control, когда я пытаюсь открыть документ Office 2007, он пытается открыть его в виде почтового индекса. (Я знаю, что это действительно zip-файлы под обложками), но когда я не использую заголовок expires или элемент управления кэшем, IE открывает их просто как Office Documents. К сожалению, у меня нет времени, чтобы попытаться выяснить все это, так как код останавливается через десять минут:)

Спасибо всем за помощь!

Ответы [ 4 ]

3 голосов
/ 05 марта 2010

По данным Yahoo! и YSlow Вы должны. Смотрите эту статью .

Обновление : Судя по вашему комментарию, вы пытаетесь предотвратить кеширование. Я бы использовал:

Cache-Control: max-age=0 

Для меня это проще и понятнее, чем использование заголовка Expires.

Обновление 2 : похоже, вам нужно указать заголовок Content-Type для офисных документов. Попробуйте использовать ниже:

Content-Type: application/octet-stream
1 голос
/ 05 марта 2010

Это определенно странная проблема ... но вот быстрое решение, которое может помешать вашим пользователям получать устаревший контент:

Если вы добавите дополнительный параметр строки запроса в конец своего URL-адреса, чтобы сделать каждый запрос уникальным для файла Office, вы можете уйти, не задав в заголовке информацию об управлении кэшем.

Ваш текущий URL может выглядеть следующим образом:

http://mysite.com/filegetter?name=document.doc

С дополнительным «уникальным» параметром:

http://mysite.com/filegetter?name=document.doc&ts=

Это позволит браузеру не предоставлять вашему пользователю устаревший офисный файл, и этот метод может быть реализован в коде клиента или сервера. Модуль, который обрабатывает доставку файла обратно вашим пользователям, просто игнорирует часть URL, которая делает его уникальным для браузера вашего пользователя.

1 голос
/ 05 марта 2010

Вместо использования Cache-Control вы можете попытаться установить заголовок Expires на прошедшую дату / время.

0 голосов
/ 06 марта 2010

Мне пришлось использовать «no-store» для успешного рендеринга PDF-файлов внутри IE6 без кэширования .

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