У меня есть страница, на которой после нажатия кнопки она заменяется вращателем Ajax, пока пользователь ожидает загрузки следующей страницы.
Я контролирую (или пытаюсь контролировать) кэширование с помощью .htaccess. Если пользователь нажимает назад (кнопка браузера, кнопка мыши, alt + left, backspace), ему необходимо перезагрузить страницу из кэша. IE 6-8 и Chrome были в порядке с этим. Firefox некоторое время не работал и недавно начал работать, но проблема, похоже, остается в Safari. Это кажется немного странным, потому что я ожидал, что Safari и Chrome будут вести себя одинаково.
Это мой файл .htaccess:
# Add Proper MIME-Type for Favicon
AddType image/x-icon .ico
<IfModule mod_expires.c>
ExpiresActive On
# ExpiresDefault A2630000
ExpiresByType image/x-icon A2630000
ExpiresByType image/gif A2630000
ExpiresByType image/jpeg A2630000
ExpiresByType image/png A2630000
ExpiresByType application/x-javascript M2630000
ExpiresByType application/javascript M2630000
ExpiresByType text/css M2630000
</IfModule>
<IfModule mod_headers.c>
Header set Cache-Control "public"
<FilesMatch "\.php$">
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"
</FilesMatch>
</IfModule>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
Я пробовал это с открытой строкой Cache-Control и без нее.
Я также пытался добавить:
AddType application/x-httpd-php .php
с:
ExpiresByType application/x-httpd-php A0
Безрезультатно.
Я что-то упускаю из виду?
Редактировать: я не думаю, что это связано с настройками кеша.
Я пытался добавить это к самому PHP:
#safari test
if (strstr($_SERVER['HTTP_USER_AGENT'],'Safari')){
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
}
И даже без этих строк я вижу в ресурсах "inspect element">, что правильные заголовки принимаются. Похоже, проблема в том, что Safari делает с ними в стремлении стать «самым быстрым браузером». Похоже, что он явно игнорирует специфику разработчиков сайта - это звучит как оригинальное мышление IE в те времена, когда таблицы использовались для макетов.