用Basket.js缓存脚本,我做错了什么?

时间:2014-05-22 21:30:48

标签: javascript jquery caching local-storage

我正在尝试使用脚本缓存在localStorage中存储脚本。在这种情况下,我正在尝试由Addy Osmani和其他人创建的Basket.js。它的工作情况表现非常棒,但问题是它没有像我期望的那样工作,但说实话,它可能正在工作,我不理解脚本缓存背后的基本原理。那么让我来描述我是如何使用它的:

首先,我设置了标记:

<script src="/framework/plugins/base/basket.js"></script>

然后,我将所有脚本包含在以下块中:

<script>basket.require({url:'/framework/plugins/base/jquery-2.1.1.js',expire:168},{url:'/framework/plugins/base/jquery.ui-1.10.4.js',expire:168},{url:'/framework/plugins/forms/dropzone/dropzone.js',expire:168});</script>

当我加载测试页面时,一切正常,除了刷新文档时的情况。一旦它被缓存......闪光!它工作得很好,但我的问题是脚本缓存本身。我总是要刷新文档才能看到它的效果。

老实说,我认为脚本缓存将脚本存储在localStorage中并执行它们,因此您可以充分利用这两个世界。但是,它似乎不是那样。

我做错了什么,或者是否有任何脚本缓存模型都是这样的?总是在第二次运行?

1 个答案:

答案 0 :(得分:3)

你说你总是要刷新文件以查看其效果是正确的#34;。根据我的理解,缓存仅在首次加载资源后发生。简单地说,basket.js将会看到jquery是必需的,并将其缓存在localstorage中。然后,这将用于从客户端加载脚本,并通过这样做将资源请求切换到服务器,以便在后续加载时进行jquery。这样可以加快重复加载时的页面加载时间,从而缩短刷新响应时间。

最初没有将资源加载到客户端,basket.js无法将脚本缓存到localstorage。

可以找到有关浏览器缓存及其实现机制的基本说明here

也就是说,如果您希望在页面的初始加载时加快资源的加载时间,我建议使用内容分发网络(CDN)服务。