2009-12-02 120 views
2

我正在制作一个应用程序,它在画布上绘制了很多小部件和切片。核心用户界面将由一串长长的字符定义,并在页面加载时由javascript进行绘制。由于该核心界面很大,> 250K,并且永远不会改变,所以缓存该界面的好方法是什么?Javascript缓存问题

我知道我可以只把它贴在该文件的顶部的变量,但有一个更有效的方法?如果写这样的:

变种IMG =新的图片(); img.src ='moose.png'

我假定浏览器会下载并缓存这张图片,以便在后续的请求中它不会再次打到我的服务器。但是我怎么用一大块文字来做呢?

编辑:基本上我正在寻找一个替代方式:

VAR myUI = “AAAABBBCBVBVNCNDGAGAGABVBVB ....等约20页”;
+0

您使用哪种服务器技术? PHP,Ruby on Rails? – 2009-12-02 20:57:49

+0

这个文件由PHP生成,但重要吗?我正在谈论客户端缓存一个非常长的字符串。 – LoveMeSomeCode 2009-12-02 21:04:19

回答

2

您可以创建一个包含文本字符串的JavaScript文件。

var text='.....'; 

然后,你可以包括脚本:

<script src="/ui.initialization.js" type="text/javascript"></script> 

随后的JavaScript您使用任何其他呈现UI。浏览器将缓存js文件。

编辑

我假设你不是让文字内嵌的长字符串。通过将它移动到一个单独的文件,您允许浏览器缓存它(如果它真的是静态的您的服务器配置了适当的缓存控制静态资源)。

下面是一些information for tweaking caching on Apache(我假设你在Apache上运行PHP)。

+0

谢谢,正是我一直在寻找的东西! – LoveMeSomeCode 2009-12-02 22:12:14

+0

这是如何工作的?为什么浏览器缓存JS文件,如果它看到第一行。有人可以给这个链接吗? – Manish 2011-01-30 06:42:09

0

大多数静态资源缓存能够通过浏览器。只需将您的数据放入.txt,.dat,.xml或其他任何文件(甚至是.js)中,并通过AJAX将其加载到您的JavaScript中即可。

+0

所以你说的就像一个JS包括?你能举个例子吗? – LoveMeSomeCode 2009-12-02 21:03:15

+0

@LoveMeSomeCode:heh,“JS include”是''标签本身。如果您使用@ Peter的其他文件建议(如.txt,.dat,.xml等),您只需要AJAX。 – 2009-12-02 21:15:37

0

时间下载250K超过1Mbps以上吞吐什么是<1秒..这是你的问题?

而你正在下载的那个包含那个带有250K行李的JavaScript的文件将会被自己缓存,可能。

0

您可以使用谷歌齿轮或新的HTML 5数据存储功能,由FF 3.5和其他支持。

0

使用谷歌网页速度YSlow的找出你可以做什么其他的(HTTP)的改进措施。