Welcome 微信登录

首页 / 软件开发 / JAVA / 真实世界中的Rails,第2部分: 高级页面缓存

真实世界中的Rails,第2部分: 高级页面缓存2011-11-20 Bruce Tate 使用 JavaScript 和 cookies 扩展页面缓存

简介:通常,与用户相关的内容不适于使用页面缓存,原因是针对每个用户的内容会有细微的不同。 通过 JavaScript 和 cookies,甚至可以在显示某些自定义用户数据时采用页面缓存。本文将研究 Ruby on Rails 中的高级页面缓存。

有了页面缓存,Rails 就可以不再介入。在某种程度上,这是件好事 ,因为您的确可以获得优秀的性能。Rails 只需创建 HTML 页面,将其放入目录,之后,就可以置之于脑 后。从那时起,就由应用服务器管理这些页面,且页面进入应用服务器无需任何循环。从性能的角度而言 ,页面缓存真是天赐之福。

我也钟爱页面缓存,Rails 使之简单利落。只需使用一行代码就可以 启用缓存。如果再加入一些代码,就能通过简单地删除文件操作或使用 Rails 较高层的 API 终止缓存。 这里存在一个问题。并不是每个网站都能使用页面缓存。如果页面上的数据会根据访问它的用户而改变, 那么就不能进行页面缓存。而且,如果很难判断页面何时到期终止,就会发现页面缓存的要求太过苛刻。

比如,几乎在每个页面上,ChangingThePresent.org(参阅 侧栏)都有某些用户数据是根据当前 登录的用户而变化的。图 1 显示了我们最新主页的一部分。(我们一直在努力完善它,所以它有可能会 改变。)这个页面呈现出的问题相对简单。如果能判断用户是否已经登录,就可以用 Flash、JavaScript 、DHTML 或任何其他基于浏览器的代码动态定制视图。您会发现已登录的用户可以登出系统或查看其配置 文件,而已登出的用户则可以注册或再次登录。

图 1. ChangingThePresent.org 上的登录和登出 视图