伪静态技术产生的背景:
1、静态网页与动态比较:
1)静态网页:
优势:A、 对搜索引擎友好,被收录的质量高;B、访问速度快;C、资源(cpu 等)占用少。
劣势:A、对于大型门户,或者社区来说,不断的修改将会产生大量I/O,会导致磁盘出现碎片甚至出现磁盘坏道。相当恐怖一个隐患。用户信息一旦没有了就没戏玩了。B、储存空间占用会多一些。
2)动态网页:
优势:相对于静态,它的劣势也就是动态的优势所在——占用空间少,对硬盘友好。
劣势:A、对搜索引擎不友好。搜索引擎会不收录带问号的网址?因为搜索引擎怕由于问号而进入死循环。
B、高并发时资源占用较多。
而伪静态就是在这样背景下应运而生了,它在保留动态的优点的基础上,使得网址静态化,也就是让网址里不带问号,骗过收录的爬虫就行了。这样完美地糅合了前边两者的优点。
优点:静态的优点+动态的优点
不足:流量稍大一些使用伪静态就出现CPU使用超负荷,由于伪静态是用正则判断而不是真实地址,分辨到底显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,确实是伪静态最大的弊病.
实现机制:是利用服务器端,对请求的动态页面做改动,让浏览器认为访问的也是静态页面,这个时候,浏览器地址栏中显示的就是静态地址信息(不带问号)了。
两种实现方法:
1、使用ISAPI_Rewrite进行动态链接重写HTML静态网址。ISAPI_Rewrite是一个dll组件,re_write是iis里的一个模块。这个筛选器实现是通过正则表达式,将动态网页网址映射成为静态网址。如可将news.asp?id=95通过re_write将其转换成news/95.html。映射的正则表达式在httpd.ini文件里进行设置。
举个小小例:处理数据翻页,那么写法是:
More_<%=Page%>_<%=type%>.html (注:page是翻页页数,type是数据类型)表现形式:More_1_95.html
如果翻下一页,则为:More_2_95.html,继续下一页的循环,则是:
More_3_95.html,以此类推。
不过你需要在httpd.ini文件中增加以下代码:
RewriteRule /More_("d+)_("d+)".html /jsp/more".asp"?page=$1&type=$2 [N,I] 字串9
如果你的动态程序有多个参数需要传递,那么就增加多个("d+)即可,如下:
RewriteRule /More_("d+)_("d+)_("d+)".html /asp/more".asp"?page=$1&type=$2&type2=$3 [N,I]