如何清除Apache缓存以强制浏览器清除缓存并加载文件?

7

我编辑了一些CSS文件,需要Apache清除所有浏览器上的缓存,强制重新加载网站。我以前使用过Cloudflare,他们有一个名为"Purge all files"的按钮来执行此操作。当我进行CSS文件更改时,我就依赖它。

在我的.htaccess文件中,我有以下内容:

ExpiresByType text/css A31536000

我知道这会导致我的缓存保留旧文件。我的主机提供商说我没有设置应用于从我的服务器缓存文件的设置。

我进入我的.htaccess文件并将此行更改为:

ExpiresByType text/css A10

试图手动"清除"我的文件并强制CSS文件重新加载。不幸的是,这并没有起作用。

是否有人知道我可以在htaccess文件中做什么,以强制用户的浏览器重新加载此CSS文件?

3个回答

12

我知道你的痛苦,Paul。尝试将以下内容添加到你的.htaccess文件中:

ExpiresActive On
ExpiresDefault A1
Header append Cache-Control must-revalidate

我在修改网站时使用这个,效果不错。然而,对于之前缓存过您的网站的用户来说,我认为没有真正强制刷新的方法。


太好了,很高兴能帮助到你 :) - Joe

0
也许这不是你要找的,这也可能与你的情况无关,但我发现一个有用的解决方法是更改 HTML/PHP 源自类似以下内容:
<link rel="stylesheet" href="mystyle.css">

to:

<link rel="stylesheet" href="mystyle.css?1">

显然,下次发生这种情况,您只需增加“?”后面的数字即可。

至少,刷新页面的用户(无论是自动还是手动)将看到更新的CSS(因为“mystyle.css?1”与“mystyle.css”分别被缓存在不同的位置)


1
如果您不需要每次强制浏览器清除缓存,可以在问号后使用时间戳。 - idpokute

0

@Joe的回答非常出色,除了@Joe的回答之外,我还建议您编辑以下文件:

vi /etc/apache2/sites-available/000-default.conf

最后,在文件末尾添加以下行:

<Location "/var/www/html">
        CacheDisable On
        CacheStoreNoStore On
</Location>

通过这种方式,您可以确保没有任何内容被缓存。

注意:建议在此解决方案之前删除客户端Web浏览器中的缓存。

@Joe和我提供的解决方案是最好的!不会有任何内容被缓存!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接