AJAX和Javascript缓存效率问题

时间:2009-03-14 02:20:57

标签: javascript ajax caching performance

我正在构建一个单页浏览的简单博客(不用担心,它是逐步构建的),因此我发送了返回HTML的AJAX请求以插入页面。

存储/缓存信息(HTML)以便稍后添加到DOM中的最有效方法是什么?

多少信息(用户可能返回的旧条目)是否敢于使用JavaScript保存客户端,因为它们包含整篇文章的HTML? 如果我以某种方式确保客户端浏览器缓存AJAX应用程序的状态(例如getHTML.php?article = 4),以便它返回HTML而不真正发送AJAX请求(在它已经存在之后),也许我不必用JavaScript保存它们被要求一次)?

提前致谢,

威廉

3 个答案:

答案 0 :(得分:2)

让浏览器缓存这些请求会不会更好?

 getHTML.php?article=4

为这些要求重新发明轮子是愚蠢的。

我认为您应该缓存的唯一内容是您知道的数据用户将切换到查看。以Digg为例 - 他们会在每次提交时缓存注释以Javascript中的对象格式。当用户想要查看此注释时,函数只需将其以正确的格式插入到文档中。但是,并非所有注释都被缓存。只有顶级的,最有可能被查看的。

您可以“切换”显示/隐藏的任何信息,这些信息可以缓存,甚至可以预加载。您也可以使用上面指出的visibility: hiddendisplay:none技术。这样,您只需将它们转置到DOM,只需在需要时显示和隐藏该元素。

答案 1 :(得分:1)

我建议你将它们缓存在DOM本身的某个地方,无论是在它们的自然位置还是在“缓存”div中,只需隐藏它们或它们的容器(visibility: hidden)。将它们移动到DOM(例如final_container.appendChild(cache.removeChild(cached_item)))并根据需要显示它们。在处理适量的缓存信息时,这应该会在内存效率,速度和简单性方面为您带来最佳效果。

使用AJAX回复标题中的正确缓存指令,浏览器也可能像对常规页面一样对AJAX回复执行缓存。

也可以查看this Browser-Side Cache article的想法。

答案 2 :(得分:0)

我同意Gary的观点,你可能会质疑你是否真的想要为此付出努力。如果你真的经历过它,我相信你有充分的理由。

如果您真的想要,您可以将每篇文章/页面/任何内容缓存为包含非常轻量级JSON和HTML内容的单独JavaScript文件。