用rails实现简单的网页伪静态化 (3/395)

< 上一篇下一篇 >
本帖地址: 复制地址

修改 回帖 引用 楼主: CMO涔漠

用户形象图片

用rails实现简单的网页伪静态化

用rails实现简单的网页伪静态化所谓网页的静态化,本来是指的动态网页为了提高访问速度,把原本需要动态生成的每一个网页,在硬盘上生成一个静态的文件,从而大幅度提高对动态内容请求的速度,减轻服务器的负载。
伪静态化,就是指的,虽然从网址上看是一个静态的网页(以.html结尾),但实际上是动态生成的页面。比如 http://www.somesite.com/topic2/1234.html,从网址上看似乎是一个位于网站topic2目录下的一个纯html文件,但是服务器在收到topic2/1234.html 的请求时,是按照预先设定好的规则,把这个请求转换成动态的指令,也就是说,上面的请求在服务器内部也许会转化成 http://www.somesite.com/showtopic.php?category=2&amp;id=1234。
说了这么多,究竟伪静态化有什么用呢?其中一个重要的理由,就是可以提高页面对搜索引擎的权重,google等搜索引擎,比较偏爱收录静态化的网页,而不是带着一堆参数的动态url的网页,所以,在SEO上,网页伪静态化是很重要的一部分。
实现伪静态化的方法有很多,目前主要是用apache中的url_rewrite模块,对传入的url请求进行重写,在rails里,更是提供了一整套url生成机制,生成“pretty url”。
在rails里,显示某个文章或者topic的典型url格式是:
:controller/:action/:id

比如: http://www.a-rails-site.com/topic/show/80
整个url很漂亮和简洁,唯一的缺点就是后缀没有.html,其实,只要很少的修改,就可以达到伪静态化的效果。
只要把link_to生成显示文章的连接稍改一下,就可以了:
原来是:
<%= link_to :controller => 'topic', :action => 'show', :id => topic.id %>

现在我们只要把后面改一下,改成:
<%= link_to :controller => 'topic', :action => 'show', :id => "#{topic.id}.html" %>


这样,就生成了类似http://www.a-rails-site.com/topic/show/80.html的格式,而且其他的部分不用更改。因为在controller中,一般通过:id找到文章,类似:
@topic = Topic.find(params[:id])

传入的:id是字符串,find之前,要对传入的:id参数做to_i处理,"80.html"经过to_i之后就是80,所以只要是类似的:id格式,都可以修改一下link_to就达到伪静态化的效果了~
回到帖子顶部

回帖 引用 1楼 老虎不吃人

用户形象图片

不错,我保存了,待有空研究研究:)
回到帖子顶部

回帖 引用 2楼のヤ賊蓒兒)"

用户形象图片

不错,            很好啊```
回到帖子顶部

回帖 引用 3楼 宝君

用户形象图片

很好很强大
回到帖子顶部
个人信息
  • 荣誉+3
  • 荣誉+2
  • 荣誉+1
  • 荣誉-1
  • 荣誉-2
  • 荣誉-3
发表留言
  • 文章不错!
  • 精华好文!
  • 支持原创文章!
  • 帖子图文并茂,好!
  • 真知灼见,说得好!
  • 恶意广告
  • 违规内容
  • 严重灌水
  • 重复发帖
  • 标题党
你确定要删除此楼层吗
扣20点经验值

快速回复进入高级回复

插入图片 选择表情

验证码 看不清?换一张(不区分大小写)

[完成后按Ctrl+Enter发表]
[回复须知]