Браузер не будет запрашивать последний PDF файл с сервера

У меня есть PDF файл на веб-сервере IIS для Windows Server, где пользователи запрашивают его с помощью IE8/9/10 с помощью HTTP-вызова, подобного этому...

http: // mydomain.com / somefolder / myFile.pdf

Первый удар загрузит файл без проблем. Проблема: если администратор обновляет PDF файл, и пользователь возвращается к перезагрузке, IE показывает только локальную кешированную версию и НЕ будет запрашивать новую версию с сервера.

Я подтвердил, что по второму запросу IE8, IE9 и IE10 вообще не вызывают сервер для файла PDF. Даже не условный запрос (например, if-updated-since). Подтверждено это с помощью Fiddler и WireShark. Но я никогда не устанавливал кеширование с Max-Age или что-то еще. У меня нет кеширования для этой папки. Я бы предпочел не устанавливать кеш "немедленно истекать". Он делает это и для Word DOC.

Есть ли ошибка в Internet Explorer, которая делает его ВСЕГДА использовать локальные копии статических документов (например, PDF файлы, DOC), несмотря ни на что?

Эти идеи НЕ работают:

  • F5, CTRL + F5, SHIFT + F5

  • Очистите историю браузера и кеш с помощью кнопки DELETE HISTORY. Почему это на самом деле не очищает ВСЕ, кеш находится вне меня. У меня есть все, что выбрано для удаления, кроме паролей.

Единственное, что я знаю об этом, это:

  • Вручную удалите PDF локально, потому что кнопка "DELETE HISTORY" не удаляет локальную версию. Но большинство пользователей не так сообразительны.

  • Используйте Firefox, но это не одобренный компанией браузер. Не начинайте меня.

  • Установите кеширование сервера для немедленного истечения срока действия, но pdf файлы смешиваются в папках с веб-страницами, и я предпочитаю не делать этого. Я хочу использовать максимальный возраст кеширования для других вещей, таких как CSS, скрипты, изображения и т.д.

  • Добавьте строку поддельного запроса в конец, как? id = 1, и это работает, но в бизнес-строке есть 100 документов, каждая из которых содержит ссылки внутри документов, которые необходимо обновить.

    /li >
  • Используйте кнопку "очистить кеш" FIDDLER или CCleaner, но большинство пользователей моей компании (70 тыс. сотрудников) не являются разработчиками и не могут иметь это программное обеспечение.

Есть ли для этого реальное решение, чтобы заставить IE вести себя так, как я думал, что это будет?

2 ответа

Мне удалось изменить файл htaccess, чтобы добавить возраст к кешу PDF файлов. Это отлично работало для исправления этой проблемы в IE и других браузерах, где исправлена ​​проблема обновления или повторного открытия браузера.

# Requires mod_expires to be enabled.
<ifmodule mod_expires.c=""> # Enable expirations. ExpiresActive On
<filesmatch ".(pdf)$"=""> Header set Cache-Control "max-age=0"
</filesmatch>
</ifmodule>


Как и ответ GNakano на использование истечения срока действия кэша для каждого типа файла с использованием .htaccess(в Apache), следующая публикация описывает, как установить срок действия кэша для каждого каталога с помощью web.config в IIS: Как настроить кеш статического содержимого для каждой папки и расширения в IIS7?

При таком подходе вам просто нужно поместить все .pdf и .docx в отдельную папку (без кэширования), а затем еще можно кэшировать для других вещей.

licensed under cc by-sa 3.0 with attribution.