2009-08-06 68 views
1

只是好奇这是否可以缓存JavaScript?也就是说,为了最大限度地减少每次刷新浏览器时重新计算一些逻辑所需的客户端cpu?javascript无法缓存?

以google javascript地图为例。当我在页面上显示地图时,是否有任何缓存机制可以在我的页面上使用?

回答

2

客户端可以在本地缓存.js文件(阻止其下载),但是该文件执行的操作是在每个负载上执行的。

至于谷歌地图,它需要执行其操作来显示地图。其他然后让客户端缓存.js文件(从而节省下载),那么你可以做的事情就不多了。

您可以做的最好的事情是限制客户端需要处理的处理量,或者如果处理结果是标量(字符串,数字,数组),则可以将其存储在cookie中供以后使用。 DOM操作在每个负载上完成。

尽可能在服务器上执行所有繁重的处理。

3

JavaScript执行会针对每个页面加载进行。另一种方法是通过首先检查在执行计算之前是否已经计算出该值,来改变JavaScript的调用方式。为了实现这一点,您需要以某种形式的状态(如会话,URL作为查询字符串参数)或cookie中存储计算的值。这将确保首次加载页面时,计算并存储该值。对于每个后续页面加载,该值将从状态中拉出而不是重新计算。

1

你不能缓存编译Javascript的结果,但是你可以避免在需要的时候加载你的应用程序逻辑部分 - 也就是说,在你需要一些逻辑的时候,添加一个新的<脚本>标记通过DOM获取您需要的功能。

+0

可以举例说明吗? – cometta 2009-08-06 04:00:42

+0

GWT对这方面的内容有一些支持 - 请参阅http://googlewebtoolkit.blogspot.com/2008/11/improving-performance-with-on-demand.html和http://groups.google.com/group/谷歌的Web的工具包,提供者/ browse_thread /线程/ eb9c8cf046cbaaf2 – bdonlan 2009-08-06 04:05:40

0

我想你是在谈论从JavaScript的加载的图像,从谷歌的服务器?

对于每个细节级别都有一个巨大的图像网格,并且在逻辑上不合理地缓存这些图像。在谷歌地图上滚动几分钟后,您将有足够的图像填满您的硬盘几次!

某些浏览器无法处理JavaScript以及其他人。 Firefox暂时落后,但Google Chrome和Safari都非常快。 Safari值得下载,因为它的开发工具将告诉你到底发生了什么事。