我无法自动刷新浏览器并清除缓存

时间:2018-10-27 14:52:13

标签: php html

我从头开始创建了一个PHP网站,每次将更改上传到主机帐户时,都必须从浏览器设置中清除chache / cockies。我该如何通过代码来实现?如果我进行其他更改,我不希望用户自己执行此操作。谢谢!

1 个答案:

答案 0 :(得分:0)

您需要发送适当的标头以防止缓存。对于纯PHP生成的内容,在发送任何其他输出之前,每页发送一次这样的内容将起作用-

<?php
  header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");
?>

对于无法通过非编程方式生成的文件(图像,.js文件,.css等),可以配置Web服务器以告知客户端限制缓存寿命。当然,要由客户来遵循指示...

来自https://www.liquidweb.com/kb/how-to-configure-apache-2-to-control-browser-caching/

<IfModule mod_expires.c>
# Turn on the module.
ExpiresActive on
# Set the default expiry times.
ExpiresDefault "access plus 2 days"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType text/css "now plus 1 month"
ExpiresByType image/ico "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/html "access plus 600 seconds"
</IfModule>

nginx和其他http服务器可以进行类似的配置-请参见https://www.digitalocean.com/community/tutorials/how-to-implement-browser-caching-with-nginx-s-header-module-on-centos-7