如何使从bookmarklet加载的JS文件的缓存失效
How to invalidate cache for JS file loaded from bookmarklet?
我有一个bookmarklet,看起来像这样:
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
进行了更改,我希望使用bookmarklet的人获得更新的文件,以防止出现问题。
对于在我的网站上加载的文件,我通过对文件进行版本控制来解决这个问题,但我不知道如何使用bookmarklet来解决这个问题。
显然,客户端没有办法神奇地知道您已经更新了脚本,除非它检查服务器。
因此,有了这个事实,您只需决定如何平衡检查服务器的成本与可接受的延迟量,并将其与您希望用于解决问题的努力量一并考虑。
我认为最简单的解决方案是简单地将缓存时间更改为一两天。
另外,查找"http etag"。如果做得好,客户端每次都会检查服务器,但是传输的数据量应该是微不足道的。
如果你不想为所有"。js"文件改变你的mod_expires规则,世界上没有任何东西说你必须使用"。js"作为所有脚本文件的扩展名。客户不关心。
另一个解决方案是附加一个日期字符串,如"?"Dt =2014-07-31-01:00:32"到脚本文件,但您可以制作日期字符串来强制每天、每隔几天、每周、每月或其他任何时间重新下载一次。
相关文章:
- JS文件的路径正在消失
- 我的外部js文件无法加载
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 动态加载和卸载js文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何将模板中的标记脚本移动到.js文件中
- 什么's是连接供应商js文件的最佳方式
- 如何在定义js文件后为外部javascript文件设置变量
- 如何在JS文件中获取资源(.resx)字符串
- 将*.js文件的内容放入Object中
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何使用Gmail运行.js文件
- 如何定义一个模块并使用它来分离js文件
- Angular JS文件上传到托管服务器
- 如何引用HTML中节点模块中的js文件
- 如何将JS文件从其他文件夹链接到页面