【发布时间】:2010-12-22 21:07:49
【问题描述】:
有人可以指出一些示例代码,说明如何在使用 javascript 加载页面的动态部分时最好地进行缓存?
我的典型示例涉及一个页面,除了页面顶部的用户登录状态和用户名之外,没有任何变化。通过 jQuery 和 ajax 请求更改此文本很容易,但由于我在 $(document).ready() 上执行此操作,如果您快速查看,您可以在 ajax 请求触发之前看到页面加载类似于“单击此处登录”并更新页面的该部分。
编辑澄清:
如果我缓存整个页面,会发生以下情况。
- 用户 A 请求页面
- 页面没有缓存,所以应用程序会生成右上角带有“Hi User A”的html
- 用户 B 请求页面
- 页面已缓存,因此应用程序按原样为我们提供服务——包括“Hi User A”位
理想情况下,在第 2 步,页面将在没有“Hi User A”位的情况下被缓存,因此当有人请求该页面时,我会发出一个简单的 ajax 请求来获取问候语,然后将其推入 dom。
我假设 javascript 是要走的路,但我认为必须有比等待$(document).ready() 更好的方法,这样页面才能更自然地呈现。
如果它很重要(尽管我认为它不应该,因为适用于静态 html 的解决方案也适用于我正在做的事情),我正在使用 rails 2.3.x 和 jQuery。
【问题讨论】:
-
在服务器上而不是在 Javascript 中进行这种操作会好得多。
-
当然会,但这意味着我要为每个请求重新生成整个页面。我正在尝试避免。 :)
-
@jerhinesmith 不,我会缓存页面的片段。或者只为注销的用户缓存整个页面。
-
我想过走那条路。当真的只有一行发生变化时,缓存片段感觉很奇怪。我会跳过箍来缓存那个小 div 周围的所有片段。只为已注销的用户缓存是一个有趣的想法。
-
如果您希望在整个 DOM 准备好之前触发,可以在所述元素下方放置一个
<script>functionThatUpdates()</script>。
标签: javascript caching fragment-caching