Opera игнорирует директивы кэширования в заголовке - PullRequest
0 голосов
/ 13 декабря 2011

Уже прочитав этот вопрос Мне не удалось выяснить, в чем проблема с моей веб-страницей http://opentox.ntua.gr/vlab/pid/, кэшируемой Opera. Вот как воспроизвести проблему:

  1. Перейдите к http://opentox.ntua.gr/vlab/pid/ с помощью Opera (версия 11.60, сборка 1185, для Linux)
  2. Не изменяйте никакие параметры - просто нажмите Run. Подождите секунду, и вы получите несколько диаграмм.
  3. Теперь установите флажок «Открыть цикл» и снова нажмите «Выполнить». Вы должны получить разные результаты, но вы этого не сделаете. Изображения кэшируются и не перезагружаются.
  4. Принудительная перезагрузка первого изображения: щелкните правой кнопкой мыши на изображении и нажмите «Обновить изображение». Вы заметите, что загруженное изображение и изменилось ...

Теперь перейдите в Инструменты> Настройки> Дополнительно> История. И установите «Кэш памяти» на «Выкл», «Проверить документы» на «Всегда» и «Проверить изображения» на «Всегда». Нажмите также «Очистить сейчас» и выйдите. Затем проблема решена. Есть ли способ заставить Opera перезагружать изображения, указав правильный заголовок HTML-документа вместо того, чтобы пользователи меняли свои конфигурации глобально?

Обратите внимание, что проблема не воспроизводится в других браузерах, и документ HTML уже содержит в своем заголовке следующие директивы:

<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="CACHE-CONTROL" content=
   "no-store, no-cache, must-revalidate, 
    post-check=0, pre-check=0, max-age=0"/>
<meta http-equiv="Expires" content="0"/>

1 Ответ

3 голосов
/ 16 декабря 2011

В графических файлах есть собственные заголовки с информацией о кешировании, ведь в вашем случае опера сообщает, что использовать кэшированные файлы можно - вы можете проверить заголовки, используя, например, firebug для ff. Попробуйте добавить что-то подобное в ваш .htaccess

Подробнее об этом здесь http://httpd.apache.org/docs/2.0/mod/mod_expires.html

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/gif "access plus 1 second"
    ExpiresByType image/jpeg "access plus 1 second"
    ExpiresByType image/png "access plus 1 second"
</IfModule> 

Это должно сработать, но, вероятно, есть более понятный способ написать это - я не эксперт по .htaccess.

Вы также можете обслуживать файлы с помощью php-скрипта, сначала выплевывая правильный заголовок без кэша, а затем записывая gif-файлы, прочитанные с hd. Надеюсь, это поможет.

...