我在网站上使用CDN (maxcdn.com)来处理js、css和图像。我注意到,从一些ISP那里,这些资源要么完全无法加载,要么加载得非常慢。但是,来自我的服务器的本地静态服务总是工作正常的。因此,我希望能够发现这些资源加载失败,并通过返回本地服务来响应它们。
我在这里找到了几种用于检测js和css加载失败的解决方案。最常见的方法是使用嵌入式js检查css中的一些js和一些cssRules (位于脚本和链接标记之后)。但是,这不允许:
是否有任何简单、优雅的方法来检测资源加载失败/缓慢并迅速返回到本地服务?
发布于 2012-07-09 16:09:06
正如这里所指出的,在开始加载脚本之后,https://stackoverflow.com/a/2021325/745190无法禁用它。
您可以尝试最初从cdn加载一个非常小的(.1kb)脚本。在很短的时间内测试该脚本,如果它下载时使用javascript将其他脚本标记附加到您的页面,如果不是,它只是一个不必要的下载的小文件。
遗憾的是,这种方法有两个主要缺点。第一个是对cdn有一个额外的查询,第二个是加载小脚本的失败可能会导致您的浏览器继续旋转。
如果你不确定的话,测试是这样的:
/* tiny-file.js */
var window.speedTest = true;和
/* The test */
setTimeout(function(){
if (window.speedTest !== true) {
//append local javascript
}
else {
//append cdn javascript
}
}, 50);发布于 2012-07-16 07:42:53
我怀疑你的问题将主要发生在一些互联网服务提供商。
如果您的主要目标是在保持CDN作为主要解决方案的同时实现性能,我可以看到两个选项。首先,你试图找出失败的互联网服务提供商,但这可能是相当长和昂贵的。另一个选择是“学习”。尝试加载一个简单的JS,从CDN中设置一个变量。如果它失败了,您可以假设存在问题。设置cookie并在下一个页面加载时使用它自动从主服务器加载所有内容。
https://stackoverflow.com/questions/11342371
复制相似问题