htaccess - 如何强制客户端的浏览器清除缓存?

Cri*_*ris 68 .htaccess caching gzip

对于我的网站,我有以下htaccess规则:

# BEGIN Gzip
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</IfModule>
# END Gzip

# BEGIN EXPIRES
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 10 days"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType text/plain "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType application/x-icon "access plus 1 year"
</IfModule>
# END EXPIRES
Run Code Online (Sandbox Code Playgroud)

我刚刚更新了我的网站,看起来一切都搞砸了,直到我清理了我的缓存.如何在更新后强制客户端浏览器清除缓存,以便用户可以看到更改?

Sae*_*ati 105

您可以强制浏览器缓存某些内容,但是

您无法强制浏览器清除其缓存.

因此,唯一的(AMAIK)方式是为您的资源使用新的URL.版本控制之类的东西.

  • @CraigLondon - 这是一个措辞问题......这仍然是真的; 但是,您可以强制浏览器在您的站点加载时刷新其缓存,如下所示:/sf/ask/400519311/ (4认同)
  • 对.正是这样.你甚至在你的htaccess中说'在10天之前甚至不用费心去联系服务器'. (3认同)
  • @dustytrash,AMAIK = 据我所知 (2认同)

tot*_*rds 57

正如其他答案所说,更改URL是一种很好的缓存清除技术,但是通过更大的站点,更改所有URL以及移动文件是很多工作.

类似的技术是只向URL字符串添加一个版本参数,该字符串是随机字符串/数字或版本号,并且仅针对已更改的文件.

例如,如果您更改站点CSS并且在执行强制刷新之前看起来很糟糕,只需添加?ver=1.1到文件头部的CSS导入即可.这对浏览器来说是一个不同的文件,但您只需要更改导入,而不是文件的实际位置或名称.

例如:

<link href="assets/css/style.css" rel="stylesheet" type="text/css" />

<link href="assets/css/style.css?ver=1.1" rel="stylesheet" type="text/css" />

适用于javascript文件也很棒.

  • 简单,容易,最好的部分.在htaccess之前尝试但是根本没有工作...... (2认同)

RAJ*_*RAJ 16

我遇到了你的问题......

虽然我们可以完全清除客户端浏览器缓存,但您可以向应用程序添加一些代码,以便最近的更改反映到客户端浏览器.

在你的<head>:

<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
Run Code Online (Sandbox Code Playgroud)

资料来源:http://goo.gl/JojsO


Ale*_*lex 5

您无法强制浏览器清除缓存.

您的.html文件似乎会在10天后过期时更快地重新加载.您需要做的是更新.html文件并将所有文件移动到新文件夹,例如version-2/或为每个文件添加版本标识符mypicture-2.jpg.然后在.html文件中引用这些新文件,浏览器将再次加载它们,因为位置已更改.