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

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

伪静态化,就是指的,虽然从网址上看是一个静态的网页(以.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就达到伪静态化的效果了~

 

 

你可能感兴趣的:(apache,搜索引擎,服务器,url,action,Rails)