我有一个看起来像这样的书签:
javascript:(function(){var a=document.createElement("script");a.type="text/javascript";a.src="//example.com/script.min.js";a.charset="utf-8";document.body.appendChild(a)})();
我在.htaccess
文件中有以下内容以允许缓存文件:
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# CSS
ExpiresByType text/css "access 1 month"
# Javascript
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
问题在于,有时我会对script.js
进行更改,并且我希望使用书签的人获取更新的文件以防止出现问题。
对于我网站上加载的文件,我通过对文件进行版本控制来克服这个问题,但我不知道如何使用书签来实现这一点。
答案 0 :(得分:2)
显然,除非客户端检查服务器,否则客户端无法神奇地知道您已更新脚本。
因此,在确定了这一事实后,您必须决定如何平衡检查服务器的成本与可接受的延迟量之间的平衡,并将其与您希望解决问题的努力量一起考虑。
最简单的解决方案恕我直言,只需将缓存时间更改为一两天。
另外,请查看&#34; http etag&#34;。如果操作正确,客户端每次都会检查服务器,但传输的数据量应该是微不足道的。
如果您不想为所有&#34; .js&#34;普遍改变您的mod_expires规则。文件,世界上没有任何东西说你必须使用&#34; .js&#34;作为所有脚本文件的扩展名。客户并不在乎。
另一个解决方案是附加日期字符串,如&#34;?dt = 2014-07-31-01:00:32&#34;到脚本文件,但您可以制作日期字符串以强制每天,或每隔几天,或每周,每月或其他一次重新下载。