缓存javascript文件的执行

时间:2012-03-26 14:05:27

标签: javascript ajax caching

据我所知,实现以下目标是不可能的,但只有专家才能证实这一点:

页面加载时,我有第1页请求一些用户和应用程序数据,第2页使用相同的脚本,请求相同的信息是浪费。

我知道浏览器会缓存脚本,我的问题是它是否还缓存了执行(数据)。

页面不共享相同的布局,因此无法通过ajax重新加载第2页。

4 个答案:

答案 0 :(得分:2)

浏览器不会自动缓存脚本的结果(这会非常奇怪),但可以通过设置(和检查)cookies来使用新的local storage stuff在现代浏览器等上。但请注意,它们会在每次请求时发送到服务器,因此会增加请求的大小;如果你可以使用本地存储,请执行。

答案 1 :(得分:1)

如果您使用localStorage等某种客户端存储空间,则可以“缓存”您的数据(有关详情,请参阅MDN docu)。

浏览器本身也可以在内部缓存您的请求,因为ajax请求与浏览器发出的任何其他请求(html文档,图像等)没有什么不同。因此,根据您的确切请求(包括所有参数),浏览器实际上可能会使用您的请求的缓存版本,以避免不必要的调用。但是,这里适用缓存的常用限制和属性,因此您可以依赖该行为!

答案 2 :(得分:1)

如果您的“网页”是新网址,浏览器不会自动缓存您的数据。

但是你有可能以多种方式实现它 一种是在支持HTML5的新浏览器中使用本地存储

另一种方法是编写应用程序,使其成为具有多个视图和转换的单个页面 使用AJAX替换部分页面(视图)。

这种技术越来越受欢迎。

我强烈建议阅读Alex MacCaw的“Javascript Web Applications”以了解javascript MVC以及如何使用javascript创建客户端(基于浏览器)控制器以及在浏览器中查看和管理缓存,状态等。还要看一下像backbone.js

这样的框架

http://www.amazon.com/JavaScript-Web-Applications-Alex-MacCaw/dp/144930351X/ref=sr_1_1?s=books&ie=UTF8&qid=1332771002&sr=1-1

答案 3 :(得分:1)

我会避免缓存数据,除非出现严重的性能问题(然后,而不是缓存性能问题而不是缓存它)。这是premature optimization

当缓存数据时,必须考虑所有类型的场景(陈旧数据,删除的数据)(除非数据是静态的,但是,无论如何,它都不相关)。