投稿 评论 顶部

静态 伪静态

佚名 网络安全

静态:

PHP程序生成静态的HTML文件,保存到服务器的磁盘中。 原理: 在用户访问PHP程序时,首先检测静态的HTML文件是否存在,如果存在直接输出静态文件,如果静态文件不存在,查询数据库,生成静态文件,并输出。 优势: 减少PHP程序编译和对数据库的查询。 数据缓冲区: 数据缓冲区是用户前端用来存储、操纵数据的对象。 通过输出控制函数实现纯静态化。

html静态页(真静态)的好处有三点;一是减少服务器对数据响应的负荷,二是加载不用调动数据库,响应速度快。三是便于优化引擎。

缺点也有三点:一是维护不方便,每次都要手动生成。三是空间占用比较大。三是生成的文件多了,服务器对html文件的响应负担也较重。

我们知道使用PHP进行网站开发,一般执行结果直接输出到游览器,为了使用PHP生成静态页面,就需要使用输出控制函数控制缓存区,以便获取缓存区的内容,然后再输出到静态HTML页面文件中以实现网站静态化。

PHP生成静态页面的思路为:首先开启缓存,然后输出了HTML内容(你也可以通过includeHTML内容以文件形式包含进来),之后获取缓存中的内容,清空缓存后通过PHP文件读写函数将缓存内容写入到静态HTML页面文件中。PHP文件读写教程?

获得输出的缓存内容以生成静态HTML页面的过程需要使用三个函数:

ob_start()、ob_get_contents()、ob_end_clean()。
1、ob_start函数一般主要是用来开启缓存,注意使用ob_start之前不能有任何输出,如空格、字符等。2、ob_get_contents函数主要用来获取缓存中的内容以字符串形式返回,注意此函数必须在ob_end_clean函数之前调用,否则获取不到缓存内容。录入fopen,fwrite,fclose(file_put_contents)。3、ob_end_clean函数主要是清空缓存中的内容并关闭缓存,成功则返回True,失败则返回Falseob_end_flush: 发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区函数格式:void ob_end_flush(void)

说明:这个函数发送输出缓冲区的内容(如果有的话)

PHP输出控制函数(Output Control)有很多应用,今后将陆续展开。

至此,使用PHP生成静态HTML页面以实现网站静态化的方法就介绍完了,根据实际情况和需求你可以选择不同的静态化方法。

如果想采用局部缓存可以才ajax的方式


Tp框架想要采用缓存的话? 打开手册? 搜索静态规则定义 把缓存配置项 粘贴到config.php中

全局搜索核心代码






伪静态

定义:

伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。

好处:

一,可以方便的实现对化化引擎的优化,并且比生成静态更加方便。二、占空间比较小。三、首页每天都自动变化,不用维护。网站首页一 般都有热点排行之类的,你可以设为,24小时排行,一周排行,再加上最新文章,最新点评等。这样首页天天是有变化的。四,便于广告的轮显。比如:你可以把 art1234.aspx,这个虚成n个页,art_1234.aspx,news_1234.aspxtop_1234.aspx,在不同的页面放 不同的广告.总之是动态的,你就可以随意动。

缺点:

我看只有一个,那就是效率不如生成html的,因为它不是真正意义上的静态页,每次请求是要读取数据库的。但你可以用缓存技术来补偿一下。

设置伪静态:

Apache下的Rewrite配置主要有2种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在此目录下建立一个.htaccess
首先需要去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#";?

如果看到这里说明已经重启了

第一种方案

在未开启vhost.conf的时候httpd.conf下书写。如果开启了vhost.conf则在此配置步骤如下:)然后再在httpd.conf或者vhost.conf中书写如下规则:
RewriteEngine on
#当访问任何以t_开头,以.html结尾的文件时,将$1用与(.*)匹配的字符替换后,访问相应的test.php页面
RewriteRule ^/t_(.*).html$ /test.php?id=$1 #绝对路径

第二种方案

针对apache服务器下的某一目录的配置,此种配置的Rewrite规则需在此目录下建立一个.htaccess
文件来书写。配置步骤如下:

(1)修改httpd.conf文件中的"AllowOverride None""AllowOverride all",同时最好将Options 也置为"all",否则可能会出问题。

(2)在目录中建立.htaccess文件(不一定非要根目录),并用记事本打开,书写如下规则:

RewriteEngine on

RewriteRule ^t_(.*).html$ test.php?id=$1

RewriteRule ^hello_(.*).html$ test/test.php?id=$1 ?#(相对路径)

如何在TP中开启伪静态