说说网站静态化和SEO
大家一说起网站的高性能,第一时间想到的就是使访问者访问的是静态页面,因为大家都知道访问静态页面的开销比动态的要小得多,而且高效得多。这也是前几年seo专家们普遍优化网站的重点之一。但是对于目前网络上内容变化频繁的大型网站而言(如淘宝),使用静态页面访问虽然很好。但是细细想一下,以淘宝这样的规模,其静态化网站的页面至少有几十万,甚至上百万。这样维护一个如此大规模的静态文件,其难度程度可想而知了,最重要的是其页面内容是经常更新的,如我们一个宝贝的页面,要显示店主的在线状态、用户的购买情况等等,这些都是可能随时更新的,因此对于这样的网站实行静态化,个人感觉无疑于“自杀”!话可能说的有点过了,呵呵,网站静态化对于小型网站,页面内容更新不需要很频繁的网站无疑是优化网站性能的一个很重要的方面,而且网站静态化对于SEO也是非常有帮助的,虽然目前的搜索引擎也支持动态生成的内容,但似乎更青睐静态页面,包括伪静态页面。
以前在开发系统时,也有一个门户的部分,当时考虑到系统的性能问题也使用静态化页面,但并不是传统的html页面,而是xml+xsl文件的组合,这样改变xsl文件后整个网站也就随之改变了,达到了内容与显示的分离,同时也实现了静态化。当然了,那个门户基本上都是新闻发布之类的,对于其内容的更新不是非常多,所以这样处理就很方便和实用了。刚刚也说到了使用伪静态化似乎是大型网站的更好的选择,因为不需要维护大量的静态文件。我们可以看到对于淘宝、163、sohu等网站,虽然其新闻页面和宝贝页面是html后缀的,但是同时也看到其内容应该是属于动态更新的,要不然,还真是无法想象。所以可以想到,目前的大型网站几乎很少用静态页面来访问的,多数是基于伪静态化的访问方式。伪静态化就是说访问地址看上去其后缀是html或htm等形式,但其内容实际上是动态生成的。那么如何实现网站的伪静态化呢?这个也是我下面要说的,就是URL的rewrite,即URL的重写技术。
我们以apache2.2为例来说下如何实现url的rewrite,首先要给apahce2安装rewrite模块,操作步骤如下:
#cd /home/ #tar xf httpd-2.2.6.tar.gz #cd httpd-2.2.6 #./configure --prefix=/usr/local/apache2.2 --enable-so --with-mpm=worker --enable-module=rewrite --enable-shared=rewrite #make && make install #cd modules/mappers/ #/usr/local/apache2.2/bin/apxs -c mod_rewrite.c -lgdbm #gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm #/usr/local/apache2.2/bin/apxs -i -A -n rewrite mod_rewrite.so
这样我们就安装好了apache的rewrite模块,然后我们就可以使用正则式来匹配url并替换了。apache使用rewrite模块的格式如下:
RewriteEngineOn#开启rewrite模块
RewriteRule源地址的正则式rewrite后的真实地址
通常对于如下的动态地址我们可以使用相应的静态地址进行重写,如下:
/bbs/list-4-1.html /mybbs/show-topic.do?border=4&page=1
这样我们在apache中就可以这样写入:
RewriteRule ^/bbs/list-([0-9]+)-([0-9]+)\.html$ /mybbs/show-topic.do?border=$1&page=$2 [pt]
像上面的地址我们就是将所有/bbs/list-4-1.html这样的地址匹配成/mybbs/show-topic.do?border=4&page=1这样的动态地址,同时转给tomcat来进行处理(rewriteRule后的[pt]标志)。我们假设以静态页面为例子的话,同时假设apache的网站根路径是/www/test/,我们在根目录下建立123.html文件,然后在apache的配置文件中写入如下的重写规则:
RewriteRule ^/show/news-([0-9]+)\.html$ /$1.html
这样,当我们访问/show/news-123.html的时候,就会被apache重写为/123.html,也就是访问到根目录下的123.html文件了,如果有246.html文件在根目录下,那么我们就可以访问/show/news-246.html了。
通过url的rewrite技术,我们可以很方便的来伪静态化网站,同时又实现动态的内容,而且对于seo也有一定的帮助,呵呵~~~另外,在lighttpd中使用rewrite也是非常方便,正则式基本上差不多。