在PHP中,默认情况下不会发送与caching相关的头文件。
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
现在,由于默认情况下,它没有提及caching,可以导致example.com/index.php在某些情况下caching吗?
是。 一般来说, 每个成功的响应都可以被缓存,除非有一些限制 :
除非被缓存控制( 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");
当所有其他的失败 – 检查手册