【发布时间】:2011-07-01 00:34:56
【问题描述】:
我希望强制刷新 JS/CSS 依赖项。
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 会为此工作,还是只会强制刷新页面本身的内容?
【问题讨论】:
标签: javascript css dependencies
我希望强制刷新 JS/CSS 依赖项。
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 会为此工作,还是只会强制刷新页面本身的内容?
【问题讨论】:
标签: javascript css dependencies
您可以使用服务器端语言为每个被拉入的文件附加时间戳:
<?php $timestamp = time(); ?>
<link href="shell.css?timestamp=<?=$timestamp?>" rel="stylesheet" type="text/css" />
我发现元缓存标签不能始终如一地跨浏览器工作,所以如果我需要在页面刷新时强制重新加载某些内容,这是我的首选。
【讨论】:
上述答案有效,但我可能宁愿在最后使用?version=1,以便在没有更改时缓存。设置 webservers 缓存策略也是有效的。
这是一篇解释网页缓存的好文章:http://www.mnot.net/cache_docs/
【讨论】:
不,它只控制当前文档。如果您不想要带有随机查询字符串的丑陋 URI,那么是时候配置您的服务器了。假设 Apache:
# mod_expires directives:
# enable expires/max-age headers and set default to 0 seconds from last access time
ExpiresActive On
ExpiresDefault A0
# configure ExpiresByType on your specific types, eg ExpiresByType text/css A0
# mod_headers directives:
# send variety of no-cache directives, should cover any quirky clients and gateways
Header set Cache-Control "max-age=0, private, no-cache, no-store, must-revalidate, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
# enclose this in <Files> directive for specific file eg <Files *.js>
如果满足以下要求,这些指令组也将在每个目录配置(.htaccess 文件)中工作(在共享环境托管的情况下):
AllowOverride FileInfo 已生效 mod_expires 或 mod_headers 已启用如果两者都启用 - 请注意组在 max-age 上重叠,您需要将其从 Header 中删除并通过 ExpiresXXXX 使用更精细的控制。
所描述的设置对于共享主机环境来说是相当常见的,所以请询问服务器管理员或自己尝试(如果未启用相应模块将返回500 Internal Server Error,如果未启用.htaccess处理则无效)
【讨论】: