Rails 网站静态化策略求教

ZhongWen_Zhou · 2012年12月10日 · 最后由 ZhongWen_Zhou 回复于 2012年12月10日 · 5476 次阅读

开门见山的介绍:1. 项目以信息展示浏览为主 2. 需要对整个网站前台进行静态化(社区讨论等动态内容除外)3. 项目层级结构较多(栏目 - 栏目 - 文章),更新频率较高(新闻资讯类网站)

项目以前主要用的 redis 做缓存,没有页面缓存。因为属于新手,没有这方面的经验,查阅过一些资料,也做过一些实验,求高手再指教指教

个人想法及实验:

  1. layout 中不再通过 render partial 引入其他部分,而通过 iframe
  2. iframe 引用的页面根据内容划分为静态的纯 html 页面,及动态的 url 请求返回(这时可用 redis 根据特定信息缓存页面片段)
  3. 对整个 action 采用 caches_page,生成静态页面,其中根据布局包含多个 iframe,根据内容则如 2 中所示

这已经做过实验是可行的,当然用在项目中可能还会有其他问题,希望有高手分享一下这种 rails 网站静态化的经验。

iframe 这种东西不要用,爬虫看不到

动态的部分可以用 Ajax 调出来,比如 用户栏 那个区域

#2 楼 @huacnlee 嗯,这个倒是没有问题,不过看 1 楼的 回复,貌似这种思路不太对啊,我现在就是还在确定这种静态化的思路

#1 楼 @ywencn 哦,这样啊,那有什么好的方法没有,网站的模板肯定会到处用到,里面的内容还是有点多,不用 iframe 又用什么好呢,请指教

应该有静态化这种 gem 吧

可以整体页面静态化,也可以局部静态化。至少信息介绍的主题可以静态化,修改之后重新静态化一下。 页面可以采用拼接的形式,静态页面拼接动态内容。

#6 楼 @woaigithub 你好,gem 我自己去找一下,你说的静态页拼接动态内容是什么概念?我们目前的确用了很多的 fragement cache,但是因为其实很多都是文章的内容展示,根本没有必要再去把这些内容缓存一下再让浏览器去渲染,就是想把每一篇文章都做成一个静态的 html 页面,因为网站就是信息咨询展示为主,如果能把每一篇文章都做成静态的,那么效果将会好很多,现在的问题还是即使一个文章展示页,也包含了很多其他的模板信息(静态内容),及热门文章等(动态内容),就是在考虑怎么去把这个页面静态化,你说的拼接动态内容,不知道是用什么方式

静态页面中包含一段 ajax 获取动态内容的代码,负责获取动态的内容。

独立静态化的过程,单独定时静态化,或者在 save 之后调用静态化组件负责静态化页面。

#8 楼 @woaigithub 额……这样啊,好像还是有差距啊,模板中那么多动态内容,感觉都去用 ajax 去一次,有点…… 先再想想吧,谢了

建议去看一下 Gregg Pollack 的 Scaling Rails(自己搜索下载,是免费视频),虽然有点老了,讲的是 Rails2 的内容,但思路很受用,很多方法目前还很管用,里面有很多关于缓存的策略。

另外 Rails4 即将带来 Russian-doll,更加好用。

#11 楼 @Macrow 大谢了,呵呵,研究研究

需要 登录 后方可回复, 如果你还没有账号请 注册新账号