伪静态

伪静态
 
伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。
IIS404错误处理机制来实现的。这个比rewrite技术要灵活的多。
首先,设置站点属性-自定义错误,找到HTTP错误404,然后编辑属性->消息类型选中URL->URL填入“/index.asp”,或您的错误处理页面。
这样,比如用户或蜘蛛访问http://网址XXX/12345.html时(12345为文章在数据库的ID).由于这些页面不存在,所以触发了404错误。转向了index.asp
在index.asp里添加
CurrDomain=Request.ServerVariables("HTTP_HOST") '当前访问域名
CurrURL=Replace(Request.ServerVariables("QUERY_STRING"),"404;http://"&CurrDomain&":80","") '当前访问URL
此时的CurrURL应该是:12345.html .
这样,就得到用户正在试图访问的页面。然后提取里边的文章ID(应该为:12345),用正则,这里就不多说了。
然后到数据库里提取出文章内容。输出到页面里,就OK了。
这样。用户或蜘蛛看到的URL还是他访问的URL.而我们对内容的处理上可以用到了动态技术。这就是我们想要的结果。说得简单了一些。但是基本思路就是这样了。
 

1伪静态与静态页面的区别

  1. URL结构以及页面名称看,伪静态和静态页面是一样的。伪静态的页面后缀可以是html htm 或者是目录格式
  2. 伪静态只是改变了URL的表现形式,实际上还是动态页面
  3. 静态页面可以节省服务器资源,而伪静态严格说是增加服务器资源消耗的
总结,在SEO方面,伪静态静态页面的功能是相同的,但是伪静态本质上还是动态页面,所以消耗资源是和动态页面一样的,而且因为Rewrite服务器还需要消耗额外的资源。[1]

2不足

1、当然犹如一篇文章的作者所说的:"如果流量稍大一些使用伪静态就出现CPU使用超负荷,我的同时在线300多人就挂了,而不使用伪静态的时候同时在线超500人都不挂,我的IIS数是1000。”确实是这样的,由于伪静态是用正则判断而不是真实地址,分别显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,确实是伪静态最大的弊病。
2、网站承受力低。
另外,会造成网站可承受同时在线人数剧减。如果你的网站可以保证1000人同时访问的话,那么做了伪静态处理之后,300人访问就足以让你网站挂掉。
3、网页打开慢。
伪静态页面打开速度快,简直太搞笑了,伪静态仍然要读取数据库,还额外的多了一个.重写网址.的过程,其他的步骤绝对不会比动态少,怎么会快呢?
4、大量的重复页面。
做了伪静态后,原有的页面也可以访问,这就造成了大量的伪静态页面和动态页面重复,对网站极为不好。
5、需要服务器支持。
并不是所有的服务器都支持伪静态的,这无形中又增加了成本。
所以,如果网址中的动态参数没有达到影响搜索引擎收录的程度,动态要比伪静态好的多。
6、造成真正的静态网页无法访问。
如果把php伪静态成html,那么真正的静态页就无法访问了。(可通过修改服务器配置解决,可是你又何必去费这把力气呢?)[2]

3如何选择

选择伪静态还是真静态
1、使用真静态和伪静态对SEO来说没有什么区别
2、使用真静态可能将导致硬盘损坏并将影响站点性能(这个实在是个谬论,非静态的对硬盘的读取次数胜过真静态)
3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
4、最重要的一点,我们要静态是为了SEO
5、真静态的访问速度明显比伪静态的访问速度要高
所以:
1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。(这个完全是乱讲了,真静态可以提高网站的性能,减少数据库的访问压力,减少CPU和内存的压力。)
2、既然真伪静态的效果一样,我们就可以选择伪静态了。
3、但是伪静态大量使用会造成CPU超负荷
4、所以我们只要不大量使用就可以了。
5、既然静态只是给搜索引擎爬虫看的,我们只需要伪静态给搜索引擎爬虫就行了,不需要给用户使用。
6、所以我们只要在专门提供给搜索引擎爬虫[3](搜索引擎机器人)爬的Archiver中使用伪静态就可以了。
在网上流传了很多关于网站生成HTML静态会对硬盘有损伤的说法(当然这里的损伤概念是指相比普通的应用程序而言,非指任何系统和程序都会让硬盘折寿类型的常规损伤)。但通过Google百度并没有发现出现过这个问题的真实例子存在,大部分都是道听途说人云亦云并没有一个比较合理的解释,下面就这个问题来作一个简单的分析。
首先,假设“网站生成HTML静态会对硬盘有损耗”这个说法成立,这个问题影响最大的应该是IDC行业中的虚拟主机服务商,因为主流CMS、论坛系统、网店系统、博客系统大多数都支持生成HTML静态功能,而且一般情况下一台服务器中都会存在100-300个虚拟主机同时运行,在有如此大的硬盘损耗的情况下,国内竟然没有一家虚拟主机服务商限制生成HTML静态站点在其虚拟主机上运行,这个现象是不是反常呢?是不是由于硬盘价格比较低虚拟主机服务商不在乎了呢?其实不然,因为想在短时间内恢复100-300个网站的数据并不是一件简单的事情,同时基于网站稳定性和硬件成本方面的考虑虚拟主机服务商不可能不在乎。所以在IDC行业中“网站生成HTML静态会对硬盘有损耗”一说法是不成立的。
其次,假设“网站生成HTML静态会对硬盘有损耗”这个说法成立,那为什么还会有那么多主流CMS、论坛、网店、博客软件公司去研发这个功能呢?这个现象是不是反常呢?因为生成HTML静态功能可能造成用户硬盘损坏而引起数据丢失,软件开发公司是肯定需要承担相应责任的,应该没有哪家软件公司会在增加自己研发成本的基础上去开发一个对自己有负面影响的功能。所以在软件行业中“网站生成HTML静态会对硬盘有损耗”一说法是不成立的。
大家都知道对硬盘的操作主要分为“读”与“写”两大部分,先分析生成HTML静态对硬盘“读”的影响:
现在以最常见的PHP动态网站为例,普通的PHP网站的执行过程是先读取PHP文件、然后根据PHP文件中的代码读取数据库中的数据,最后输出到访问者的浏览器中进行显示。在这个执行过程中PHP文件至少读取一次(如果代码中包含include之类的语句的话还需要读取更多次),数据库至少读取一次(一般情况下需要读取多次),在这个过程完成之前一般需要读取硬盘2-20次左右,当然不同的WEB服务器、数据库、系统对IO的操作过程也不一样,但基本可以初步了解到这个实现基本过程。
再来看“生成HTML静态”网站的执行过程,很明显执行过程就是直接读取HTML文件再传输到访问者的浏览器进行显示,对硬盘的读取操作只有1次。
根据以上分析可以得出结论,“生成HTML静态”网站只有普通动态网站读取硬盘频率的1/10,再加上“生成HTML静态”网站可以利用浏览器的页面缓存,对硬盘读取的频率可以进一步降低,“生成HTML静态”网站在硬盘的“读”操作方面没有任何损伤,反而可以更好的保护硬盘。
明白了生成HTML静态对硬盘“读”的影响,我们再来看看生成HTML静态对硬盘“写”的影响:
还是以现在最常见的PHP动态网站为例,PHP动态网站在添加文章时直接把数据写入了数据库,对硬盘进行了一次写操作。而“生成HTML静态”网站在写入数据库的同时把数据又写入了文件,对硬盘进行了两次写操作。但在实际项目中,我们只会把修改频率非常低的内容生成HTML静态,比如文章、商品内容,这些页面的写频率本身就非常非常低的,比如我们站点发布的文章在发布后几乎就不会再进行修改了。对于一个拥有10万篇文章的站点来说,平均一篇文章修改1次,对硬盘的写入次数也才20万次,一般服务器硬盘的使用寿命都在5-10年左右,其实再放大数万倍也不至于达到能够损伤硬盘的地步。不相信的朋友可以下载DiskCountersView软件查看一下你自己的电脑在24小时内读写硬盘的次数,在普通情况下24小时内读写硬盘的次数就会超过了千万次,如此计算20万次硬盘写入几乎可以忽略不计。
根据以上的分析可以得出结论,“生成HTML静态”网站比普通动态网站硬盘写入频率高2倍,但由于生成“生成HTML静态”的内容几乎不会再进行修改,所以对硬盘的写入次数可以忽略不计,不会对硬盘造成任何损伤。
总结:在最有说话权的IDC行业和软件行业中“生成HTML静态页面对硬盘有损伤”的说法并不成立,而且通过技术分析也证明生成HTML静态页面并不会对硬盘造成任何损伤,相反还可以极大的降低对硬盘、数据库的读取操作频率,提高站点访问速度。

4两者评论

伪静态和真静态的评论
真正的静态化和伪静态还是有本质的区别的。为浏览用户处理一个纯粹html和一个调用多个数据的php在CPU的使用率方面明显前者少。记得原来有个人说html下载硬盘读写频繁,他这么说好像读取数据库不用读写磁盘似的,何况还有一大堆缓存的零散php也是放在硬盘的,这些读取不用磁盘操作么?
读取单个html+图片Flash等附件就可以实现的目的,何苦要读数据库又要读php缓存文件又要重新整合数据输出再+图片Flash等附件这么大费周章呢?CMS首页不需要很多的互动的,论坛那一套不应该拿到这里来用,相反应该更多考虑的是:美观!兼容!信息的直观!性能!还有稳定!

5方法

需要的工具只有两样,首先就是需要..htaccess文件,然后将创建好的.htaccess文件用记事本打开输入一下代码:
  # BEGIN WordPress
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
  # END WordPress
  再保存上传到网站根目录下,第二步:进入wordpress后台,依次找到:【设置】处【固定链接】选择【自定义结构】在【自定义结构】处填写/%post_id%.html,最后就可以,如果你的网站装了缓存插件需要更新一下。
posted @ 2013-12-24 16:12  黄煜坤  阅读(443)  评论(0编辑  收藏  举报