我们一直在为用户创建SaaS,并向他们提供脚本以附加到他们的网站页面上,并且无法附加带有脚本的版本,因为用户会将脚本附加到他们的网站上以实现功能,而我不能强迫他们每次我们更新脚本时都要更改版本
因此,我们找到了一种在用户每次调用原始脚本时加载较新版本的脚本的方法
提供给用户的脚本链接
<script src="https://thesaasdomain.com/somejsfile.js" data-ut="user_token"></script>
脚本文件
if($('script[src^="https://thesaasdomain.com/somejsfile.js?"]').length !== 0) {
init();
} else {
loadScript("https://thesaasdomain.com/somejsfile.js?" + guid());
}
var loadscript = function(scriptURL) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = scriptURL;
head.appendChild(script);
}
var guid = function() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
var init = function() {
// our main code
}
说明:
用户已在其网站上附加了提供给他们的脚本,我们检查了脚本附带的唯一令牌是否存在,或者不使用jQuery选择器,如果不存在,则使用较新的令牌(或版本)动态加载该脚本
两次调用同一脚本可能会导致性能问题,但它确实解决了强制将脚本从缓存中加载而不将版本放入提供给用户或客户端的实际脚本链接中的问题。
免责声明:如果性能对于您而言是个大问题,请不要使用。