快速业务通道

真实世界中的Rails,第2部分: 高级页面缓存 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
正确的体验。为了进一步细分,我会进行如下操作:

创建只 具有所有用户的公共元素的 Web 页。

当用户登录时,将一些有关该用户的数据存入 cookie,比 如说登录信息。

然后,使用 JavaScript 依据 cookie 的内容注入 HTML 段,借此填充该页面的 剩余部分。

对于 ChangingThePresent 主页而言,show-and-tell 技巧有些威力过度,因为我只 有两套链接要根据所登录的用户加以显示。因此,我选择了第二种技巧,我称之为 hide-and-seek。首先 ,显示出所有用户的公共页面元素,并通过每种数据可能 的隐藏版本显示页面的变化部分。这就是 hide 部分。然后,根据用户的角色使用 JavaScript 在文件中找到该用户的内容并显示出来。这就是 seek 部 分。您可能会想,显示所有可能数据的版本有点威力过度,实际上,选择性地为不同的安全角色启用多种 特性时,这种方式是十分常见的。hide-and-seek 方式非常适合 ChangingThePresent 主页。要实现这种 方法,可以执行如下操作:

创建只具有所有用户的公共元素的 Web 页。

将用户按类型分区。为每个用户类型添加内容版 本。就我的具体情况而言,ChangingThePresent 主页的用户类型包括登录用户和登出用户。最初,让此 内容可见。

当用户登录时,将一些可区分用户分组的数据存入 cookie,比如说用户角色或登录 状态。

当用户访问此页时,选择性地显示用户类型的内容版本。

真实世界中的Rails,第2部分: 高级页面缓存(4)

时间:2011-11-20 Bruce Tate

实现 hide and seek

对于 ChangingThePresent 主页而言,hide-and-seek 实现起来异常简单。在之前的图 1 中 ,此主页有一个部分显示的是与用户帐户相关的一些链接。这些链接可以根据用户是否登录而变化。首要 工作是构建此页的所有公共内容。我在本文并未给出具体做法。第二页需要显示出所有用户的全部动态内 容,而不管用户是否已经登录:

清单 1. 在单一视图中创建动态内容的所有版本

<div id=''logged_out''>
 <%= link_to "login", :controller => ''members'', :action => 

''login'' %>
 <br />
 <%= link_to "register", :controller => ''members'', :action => 

''signup'' %>
</div>
<div id=''logged_in'' style="display: none;">
 <%= link_to "your profile", :controller => ''profiles'', :action 

=> ''show'' %>
 <%= link_to "logout" , :controller => "members", :action => 

"logout" %>
</div>

您可能已经注意到 my profile 链接。起初,该链接指向用户特定的配置文件, 但这样可能会妨碍我们的主页缓存。相反,我只简单地将此链接指向了无任何用户 ID 的索引操作。然后 ,索引操作会将用户重定向到正确的配置文件页:

清单 2. 将用户重定向到正确的配置文件页

  def index
    redirect_to my_profile_url
  end

在清单 2,my_profile_url 是一个方法,该方法可以根据用户的类型(这可能是名人 、顾问或会员)决定正确的配置文件 URL。每个用户类型都有一个单独的配置文件页。这时,程序的功能 已经完成,您总共可以看到四个链接,logged_in 和 logged_out 各有两个链接:

login

register

your profile

logout

真实世界中的Rails,第2部分: 高级页面缓存(5)

时间:2011-11-20 Bruce Tate

下一步,获取含有当前用户类型的 cookie。对于 ChangingThePresent,我在登录时创建了一个 cookie,其中含有当前的登录 ID。之后, 在登出时再销毁这个 cookie:

清单 3. 在登录和登出时创建和销毁 cookies

def login
 i

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号