如何用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清除浏览器缓存?的主要内容,如果未能解决你的问题,请参考以下文章

在浏览器中加载每个php页面时如何清除缓存?

WordPress 怎么用php代码控制浏览器缓存时间??

PHP清除浏览器缓存以避免刷新后重新发送表单数据

能用JS或者前端的啥方法实现清除浏览器缓存吗

PHP 能将数据入浏览器缓存吗?如果能求讲解!

如何用arp命令添加一项静态ARP缓存