首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理从CDN加载资源的故障或缓慢。

问处理从CDN加载资源的故障或缓慢。
EN

Stack Overflow用户
提问于 2012-07-05 10:24:15
回答 2查看 1.1K关注 0票数 3

我在网站上使用CDN (maxcdn.com)来处理js、css和图像。我注意到,从一些ISP那里,这些资源要么完全无法加载,要么加载得非常慢。但是,来自我的服务器的本地静态服务总是工作正常的。因此,我希望能够发现这些资源加载失败,并通过返回本地服务来响应它们。

我在这里找到了几种用于检测js和css加载失败的解决方案。最常见的方法是使用嵌入式js检查css中的一些js和一些cssRules (位于脚本和链接标记之后)。但是,这不允许:

  1. 检测慢速加载(一旦检测到慢度,…应立即启动回退)
  2. 检测从css引用的图像的加载失败。

是否有任何简单、优雅的方法来检测资源加载失败/缓慢并迅速返回到本地服务?

EN

回答 2

Stack Overflow用户

发布于 2012-07-09 16:09:06

正如这里所指出的,在开始加载脚本之后,https://stackoverflow.com/a/2021325/745190无法禁用它。

您可以尝试最初从cdn加载一个非常小的(.1kb)脚本。在很短的时间内测试该脚本,如果它下载时使用javascript将其他脚本标记附加到您的页面,如果不是,它只是一个不必要的下载的小文件。

遗憾的是,这种方法有两个主要缺点。第一个是对cdn有一个额外的查询,第二个是加载小脚本的失败可能会导致您的浏览器继续旋转。

如果你不确定的话,测试是这样的:

代码语言:javascript
复制
/* tiny-file.js */
var window.speedTest = true;

和

代码语言:javascript
复制
/* The test */
setTimeout(function(){
    if (window.speedTest !== true) {
        //append local javascript
    }
    else {
        //append cdn javascript
    }
}, 50);
票数 2
EN

Stack Overflow用户

发布于 2012-07-16 07:42:53

我怀疑你的问题将主要发生在一些互联网服务提供商。

如果您的主要目标是在保持CDN作为主要解决方案的同时实现性能,我可以看到两个选项。首先,你试图找出失败的互联网服务提供商,但这可能是相当长和昂贵的。另一个选择是“学习”。尝试加载一个简单的JS,从CDN中设置一个变量。如果它失败了,您可以假设存在问题。设置cookie并在下一个页面加载时使用它自动从主服务器加载所有内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11342371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档