关闭

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

1500人阅读 评论(1) 收藏 举报

所谓网页的静态化,本来是指的动态网页为了提高访问速度,把原本需要动态生成的每一个网页,在硬盘上生成一个静态的文件,从而大幅度提高对动态内容请求的速度,减轻服务器的负载。

伪静态化,就是指的,虽然从网址上看是一个静态的网页(以.html结尾),但实际上是动态生成的页面。比如 http://www.somesite.com/topic2/1234.html,从网址上看似乎是一个位于网站topic2目录下的一个纯html文件,但是服务器在收到topic2/1234.html 的请求时,是按照预先设定好的规则,把这个请求转换成动态的指令,也就是说,上面的请求在服务器内部也许会转化成 http://www.somesite.com/showtopic.php?category=2&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就达到伪静态化的效果了~

 

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1651968次
    • 积分:20033
    • 等级:
    • 排名:第422名
    • 原创:91篇
    • 转载:1131篇
    • 译文:0篇
    • 评论:145条
    文章分类
    最新评论