如何用php清除浏览器缓存?
Posted
技术标签:
【中文标题】如何用php清除浏览器缓存?【英文标题】:How to clear browser cache with php? 【发布时间】:2010-11-05 10:52:58 【问题描述】:【问题讨论】:
你的意思是:如何防止我的东西被缓存。如果没有预装的软件(activeX 等),您无法从服务器清除浏览器缓存,这些软件具有修改用户系统的广泛权限。 【参考方案1】:借助最近浏览器对“Clear-Site-Data”标头的支持,您可以清除不同类型的数据: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data
header('Clear-Site-Data: "cache", "cookies", "storage", "executionContexts"');
【讨论】:
【参考方案2】:它接缝你需要版本化,所以当一些变化发生时,浏览器会捕捉到新的东西,用户不需要清除浏览器的缓存。
您可以通过子文件夹(example /css/v1/style.css)
或文件名(example: css/style_v1.css)
来实现,甚至可以为您的网站设置不同的文件夹,例如:
www.mywebsite.com/site1
www.mywebsite.com/site2
www.mywebsite.com/site3
并使用 .htaccess 甚至更改 httpd.conf 以重定向到您当前的应用程序。
如果是关于一个图片或页面:
<?$time = date("H:i:s");?>
<img src="myfile.jpg?time=<?$time;?>">
当您不想缓存时,可以在零件上使用 $time。所以它总是会拉一个新的图像。版本化它是一种更好的方法,否则它可能会使您的服务器过载。请记住,浏览器的缓存不仅有利于用户体验,也有利于您的服务器。
【讨论】:
【参考方案3】:您可以通过设置这些标头来删除浏览器缓存:
<?php
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
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");
?>
【讨论】:
这对我有用。我试图预览一个 6MB 的 pdf。我的脚本适用于小型 pdf,但不超过 3 mbs。 这是清除缓存的方法,包括加载的音频或图像文件路径。 这不会清除已经存在的缓存。如果浏览器之前访问过该页面并且标头设置为缓存,则它很可能只会加载缓存的文件并且永远不会收到新的无缓存标头,直到用户手动刷新其内容为止。【参考方案4】:header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: application/xml; charset=utf-8");
【讨论】:
每次清除缓存并不总是最好的选择。可能值得一读。 这里的Content-Type是一个红鲱鱼。 这不会清除用户的浏览器缓存。但是,它确实告诉浏览器不要缓存此特定页面。 无需教客户如何清除缓存的好方法。 此代码对我不起作用,先生...我必须手动重新加载我的页面。以上是关于如何用php清除浏览器缓存?的主要内容,如果未能解决你的问题,请参考以下文章