如何可靠地加载所需的JavaScript文件?

时间:2011-08-24 09:06:52

标签: javascript dynamic

由于互联网连接问题,我遇到了一些问题,一些必需的JavaScript文件未加载。 Body onload事件被触发,但页面逻辑所需的类不存在。

还有一件事,我想解决的问题不在于网站,而是在没有任何图像或CSS文件的Web应用程序中。想象一下在iframe中运行的JavaScript代码。因此,我只有脚本问题。

以下是我的想法如何解决这个问题,如果我错了,请评论/纠正我:

  1. 在推送到实时时对文件进行模糊处理和组合,这样文件的整体大小就会减少,任务就会可靠地加载1个文件
  2. 在服务器上启用gzip压缩。因此,再次生成的文件大小会小得多
  3. 为该文件添加适当的缓存标头,因此一旦加载,它将缓存在浏览器/代理服务器
  4. 最后,即使拥有所有这些,也可能会出现无法加载文件的情况。在这种情况下,我计划在加载页面后从JavaScript动态加载该文件。将有“重试失败的加载”逻辑,最多5次尝试,例如
  5. 还有其他想法吗?

4 个答案:

答案 0 :(得分:1)

如果“重试”脚本无法获取所需的依赖项,则重定向到站点的“无脚本”版本(如果有)。或者尝试使用优雅降级的页面,因此即使所有步骤都失败,该站点仍然可用。

答案 1 :(得分:1)

1 - 正确但仔细检查来自不同文件的JavaScript函数是否相互重叠 2 - 正确 - 应始终打开。
3 - 正确但浏览器仍会尝试从服务器获取HTTP 304: Not Modified代码 4 - 正确,考虑在尝试1次或2次失败后回退到noscript版本的网站(5次太多)。

答案 2 :(得分:1)

我个人认为尝试重做浏览器的逻辑并不值得。如果页面中的图像无法加载怎么办?如果主页面没有加载怎么办?如果用户有互联网连接问题,他们需要修复这些互联网连接问题。在他们这样做之前,许多事情都无法可靠地运作。

那么,您是否要检查页面显示的每个图像是否正确加载,如果没有加载,您是否会手动尝试重新加载?

在我看来,将一些内联JS用于检测外部JS文件是否未加载可能是值得的(您需要做的就是检查外部是否存在一个全局变量或顶级函数) JS文件),然后告诉用户他们有互联网连接问题,他们应该解决这些问题,然后重新加载网站。

答案 3 :(得分:1)

您的积分对脚本加载有效,但您还必须考虑网站使用情况。

如果由于某种原因未加载脚本,则该站点仍必须完全可用且可导航。用户体验优先于其他所有事物。

脚本应该在浏览器加载和可视化网站界面后加载,并且应该包含增强用户体验的代码,而不是你必须完全依赖的东西。

这种方式即使连接速度很慢,我仍然可以阅读内容并选择更改页面或转到其他地方,而不是显示空白页面或只显示标题的页面。

这对我来说是最重要的一点。

另外,您确定重试方法吗?它会导致对服务器的更多请求。如果连接缓慢或滞后,那么最好不要运行脚本,特别是考虑到用户可能在页面上花费的时间很少,只需要快速阅读内容。此外,在连接速度很慢的情况下,您会为超时设置多长时间?如果在超时触发时下载脚本并再次重试,该怎么办?如何有效地确定时间量和连接的“缓慢”?

修改

你试过head.js吗?是一个针对尽可能快的sripts加载的插件,也许它会有所帮助。