一、伪静态技术产生的背景
1、静态网页与动态比较:
1)静态网页:
优势:A、 对搜索引擎友好,被收录的质量高;B、访问速度快;C、资源(cpu 等)占用少。
劣势:A、对于大型门户,或者社区来说,不断的修改将会产生大量I/O,会导致磁盘出现碎片甚至出现磁盘坏道。相当恐怖一个隐患。用户信息一旦没有了就没戏玩了。B、储存空间占用会多一些。
2)动态网页:
优势:相对于静态,它的劣势也就是动态的优势所在——占用空间少,对硬盘友好。
劣势:A、对搜索引擎不友好。搜索引擎会不收录带问号的网址.因为搜索引擎怕由于问号而进入死循环。
B、高并发时资源占用较多。
2、而伪静态就是在这样背景下应运而生了,它在保留动态的优点的基础上,使得网址静态化,也就是让网址里不带问号,骗过收录的爬虫就行了。这样完美地糅合了前边两者的优点。
优点:静态的优点+动态的优点
不足:流量稍大一些使用伪静态就出现CPU使用超负荷,由于伪静态是用正则判断而不是真实地址,分辨到底显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,确实是伪静态最大的弊病.
3、实现机制:是利用服务器端,对请求的动态页面做改动,让浏览器认为访问的也是静态页面,这个时候,浏览器地址栏中显示的就是静态地址信息(不带问号)了。
二、实现方法
1、如果是ASP.NET
①:首先要有这个文件URLRewriter.dll,[点击下载],将其放到网站的bin目录里面,并且将其引用到项目里面;
②:Web.Config文件里面添加如下配置
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/News/(.[0-9]*)\.aspxLookFor>
<SendTo>~/News.aspx?ID=$1< ndTo>
RewriterRule>
Rules>
RewriterConfig>
<system.web>
<httpHandlers>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
httpHandlers>
system.web>
设置完以上两个步骤,就基本可以运行了,这样比如上面的网址http://localhost/News.aspx?id=9就可以用http://localhost/News/9.aspx来代替。
上面的<LookFor>~/News(.[0-9]*)\.aspxLookFor>这句这正则表达式URL,即被重写的URL,而<SendTo>~/News.aspx?UserID=$1SendTo>这一句为原始URL地址。其中的$1为第一个正则表达式值,以此类推,第二个即为$2
注意:上面例子的扩展名为.aspx,如果你喜欢用htm做扩展名,这还需要做下面一步,
IIS配置:网站->属性->主目录->配置->映射->应用程序扩展->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选
只有做了最后一步,才可以用http://localhost/News/9.html 访问。
三、结论
伪静态太适合用在普通的企业网站上了——既不要求高并发,但同时又很在乎seo(搜索引擎优化),而且也要求后台可动态更新。——当然实现直接生成静态页也行,因为这种不像社区那种修改量那么大。