кэширование заголовков из PHP - PullRequest
3 голосов
/ 19 ноября 2010

В 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 будет кэшироваться в некоторых ситуациях?

Ответы [ 3 ]

4 голосов
/ 19 ноября 2010

Да.В общем, каждый успешный ответ может быть кэширован , если нет каких-либо ограничений :

Если специально не ограничено контролем кэша ( раздел 14.9Директива ), система кэширования МОЖЕТ всегда хранить успешный ответ (см. раздел 13.8 ) как запись кэша, МОЖЕТ возвращать ее без проверки, если она свежая, и МОЖЕТ возвращать ее после успешной проверки.

4 голосов
/ 19 ноября 2010

Да, обычно браузер по умолчанию кэширует определенные файлы (обычно images и 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 в заголовке и прочитайте примечание под ним.

1 голос
/ 19 ноября 2010

может ли это привести к тому, что скажем example.com/index.php будет кэшироваться в некоторых ситуациях?

Не должно быть, однако существует множество реализаций (особенно на мобильных устройствах / мобильных прокси-серверах), которые ведут себя некорректно в этом отношении.

Существует также много неверной информации о кэшировании - «Pragma: no-cache» имеет значение бессмысленно при отправке с сервера.

Чтобы предотвратить кеширование:

header("Cache-Control: no-store, no-cache, must-revalidate"); 

Когда ничего не помогает - проверить руководство

...