脚本缓存篮.js,我做错了什么

Script caching with Basket.js, am I doing something wrong?

本文关键字:错了 什么 缓存 js 脚本      更新时间:2023-09-26

我试图使用脚本缓存在localStorage中存储脚本。在这种情况下,我正在尝试由Addy Osmani和其他人创建的basketball .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中并执行它们,因此您可以获得两全其美的效果。然而,它似乎不是那样的。

我做错了什么,或者它是任何脚本缓存模型像这样工作吗?总是在第二次运行?

你说你"总是必须刷新文档才能看到它的效果"是对的。根据我的理解,缓存只发生在第一次加载资源之后。简单地put basket.js会发现需要jquery,并将其缓存到本地存储中。然后使用它从客户端加载脚本,并通过这样做减少对服务器的资源请求,以便在后续加载时使用jquery。这加快了重复加载时的页面加载时间,因此刷新时的响应时间更快。

如果没有初始加载资源到客户端,basket.js无法将脚本缓存到本地存储。

关于浏览器缓存机制及其实现的基本解释可以在这里找到。

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