【问题标题】:AJAX and Javascript cache efficiency questionAJAX 和 Javascript 缓存效率问题
【发布时间】:2009-03-14 02:20:57
【问题描述】:

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

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

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

提前致谢,

威廉

【问题讨论】:

    标签: javascript ajax caching performance


    【解决方案1】:

    让浏览器缓存这类请求不是更好吗?

     getHTML.php?article=4
    

    为这样的请求重新发明轮子是愚蠢的。

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

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

    【讨论】:

      【解决方案2】:

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

      在您的 AJAX 回复标头中使用适当的缓存指令,浏览器还可以像处理常规页面一样对您的 AJAX 回复执行缓存。

      也请查看this Browser-Side Cache article 以获取想法。

      【讨论】:

        【解决方案3】:

        我同意 Gary 的观点,您可能会质疑您是否真的想为此付出努力。如果你真的坚持下去,我相信你有充分的理由。

        如果您真的愿意,您可能可以将每篇文章/页面/任何内容缓存为一个单独的 JavaScript 文件,其中包含带有 HTML 内容的真正轻量级 JSON。

        【讨论】:

          猜你喜欢
          • 2012-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-18
          • 2014-05-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多