我正在尝试使用脚本缓存在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中并执行它们,因此您可以充分利用这两个世界。但是,它似乎不是那样。
我做错了什么,或者是否有任何脚本缓存模型都是这样的?总是在第二次运行?
答案 0 :(得分:3)
你说你总是要刷新文件以查看其效果是正确的#34;。根据我的理解,缓存仅在首次加载资源后发生。简单地说,basket.js将会看到jquery是必需的,并将其缓存在localstorage中。然后,这将用于从客户端加载脚本,并通过这样做将资源请求切换到服务器,以便在后续加载时进行jquery。这样可以加快重复加载时的页面加载时间,从而缩短刷新响应时间。
最初没有将资源加载到客户端,basket.js无法将脚本缓存到localstorage。
可以找到有关浏览器缓存及其实现机制的基本说明here。
也就是说,如果您希望在页面的初始加载时加快资源的加载时间,我建议使用内容分发网络(CDN)服务。