В PHP по умолчанию не отправляются заголовки, связанные с кешем.
HTTP/1.1 200 OK Date: Fri, 19 Nov 2010 11:02:16 GMT Server: Apache/2.2.15 (Win32) PHP/5.2.9-2 X-Powered-By: PHP/5.2.9-2 Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 26 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html
Теперь, поскольку по умолчанию он ничего не говорит о кешировании, может ли это привести пример example.com/index.php в кэширование в некоторых ситуациях?
Да. В общем, каждый успешный ответ может быть кэширован, если не существует некоторых ограничений :
Если специально не ограничено директивой по управлению кешем ( раздел 14.9 ), система кэширования МОЖЕТ всегда сохранять успешный ответ (см. Раздел 13.8 ) в качестве записи в кэш, МОЖЕТ вернуть его без проверки, если он свежий, и МОЖЕТ вернуть его после успешной проверки ,
Да, обычно браузер будет кэшировать определенные файлы по умолчанию (обычно изображения и css), если на серверной стороне не установлены правила (см. Кеш браузера ).
Вы можете настроить заголовки управления кешем, чтобы управлять этим, или полностью отключить его, используя:
header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
См. Пример № 2 в заголовке и прочитайте примечание ниже.
может ли это привести к тому, что example.com/index.php будет кэшироваться в некоторых ситуациях?
Этого не должно быть, однако есть много реализаций (особенно на мобильных устройствах / мобильных прокси), которые не ведут себя правильно в этом отношении.
Также есть много плохой информации о кешировании – «Pragma: no-cache» не имеет смысла при отправке с сервера.
Чтобы предотвратить кеширование:
header("Cache-Control: no-store, no-cache, must-revalidate");
Когда все остальное не удается – проверьте руководство