使用Javascript进行片段缓存

时间:2010-12-22 21:07:50

标签: javascript caching fragment-caching

在使用javascript加载页面的动态部分时,有人能指出一些关于如何最好地进行缓存的示例代码吗?

我的规范示例涉及一个页面,除了用户在页面顶部的登录状态和用户名之外,其他任何内容都不会发生变化。通过jQuery和ajax请求更改此文本很容易,但由于我在$(document).ready()上执行此操作,如果您快速查看,您可以在ajax之前看到页面加载类似“Click Here to Login”的内容请求触发并更新页面的该部分。

编辑以澄清

如果我缓存整个页面,会发生以下情况。

  1. 用户A请求页面
  2. 页面未缓存,因此应用程序会在右上角生成带有“Hi User A”的html
  3. 用户B请求页面
  4. 页面已缓存,因此应用程序按原样提供给我们 - 包括“Hi User A”位< - 这是我想要动态更新的部分。
  5. 理想情况下,在第2步,页面将在没有“Hi User A”位的情况下进行缓存,这样当有人请求页面时,我会发出一个简单的ajax请求来获取问候语,然后将其推送到dom中。 / p>

    我假设javascript是要走的路,但我认为必须有一种比等待$(document).ready()更好的方式,以便页面更自然地呈现。

    如果重要(虽然我认为不应该,因为适用于静态html的解决方案也适用于我正在做的事情),我使用的是rails 2.3.x和jQuery。

2 个答案:

答案 0 :(得分:1)

我最初会在服务器的主页面中加载用户状态,使用生成AJAX响应的相同内容。然后,当用户更改状态时,使用AJAX客户端更新它。

这样,初始页面具有正确的状态,但在用户执行操作时仍可以更改。

假设方法getStatus()为用户所处的任何状态生成正确的HTML。在页面上,我将有<div>包含此信息。服务器端,调用getStatus()(出于示例目的使用PHP):

<div id="status"><?php =getStatus() ?></div>

然后让您的AJAX请求返回getStatus()并更新<div id="status">内容。

答案 1 :(得分:0)

啊哈!有一个railscast完全符合我的要求!

Rails-y goodness可以在这里找到:http://railscasts.com/episodes/169-dynamic-page-caching