我有一个如下所示的书签:
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
进行更改,并且我希望使用书签的人们获取更新的文件以防止出现问题。
对于在我的网站上加载的文件,我通过对文件进行版本控制来解决此问题,但我不知道如何使用小书签来做到这一点。
最佳答案
显然,除非客户端检查服务器,否则客户端无法神奇地知道您已更新脚本。
因此,根据这一事实,您必须决定如何平衡检查服务器的成本与可接受的延迟量,并考虑到您希望为解决问题付出的努力。
恕我直言,最简单的解决方案是将缓存时间更改为一两天。
另外,查找“http etag”。如果做得正确,客户端每次都会检查服务器,但传输的数据量应该很小。
如果您不想为所有“.js”文件普遍更改 mod_expires 规则,那么世界上没有什么规定您必须使用“.js”作为所有脚本文件的扩展名。客户不在乎。
另一种解决方案是将“?dt=2014-07-31-01:00:32”等日期字符串附加到脚本文件中,但您可以制作日期字符串以强制每天重新下载一次,或者每隔几天,或每周一次,或每月一次,等等。
关于javascript - 如何使从书签加载的JS文件的缓存失效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070526/