php页面静态化

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

如何优化页面响应时间:

动态页面静态化优化数据库使用负载均衡使用缓存如果页面中的一些内容不经常改动,可以使用动态页面静态化。好处是:减少服务器脚本的计算时间;降低服务器的响应时间。

1、动态URL地址设置静态形式(伪静态)

例如:http://xxx.com/index.php?c=play&id=1111 =>

http://xxx.com/play/1111.html (并不是一个纯静态页面)

2、buffer

buffer其实就是缓冲区,一个内存地址空间,主要用于存储数据区域。

编写一个buffer.php文件,并保存,并不是直接将文件内容保存在磁盘里,而是先把内容写入到buffer中,当一个buffer写满的时候,会把buffer中的数据写入到磁盘里,这是操作系统的buffer。

当执行一个PHP程序的时候,如果有输出内容,会先放到输出缓冲区,数据再通过tcp传给客户端或浏览器。

要想数据能够放到输出缓冲区,首先打开输出缓冲,通过php.ini文件output_buffering = On或者ob_start(),然后使用ob_get_contents()获取输出缓冲区内容。

3、PHP实现页面纯静态化

纯静态化的html文件放在服务器端的磁盘。

基本方式:

file_put_contents()函数; intfile_put_contents (string$filename,mixed$data[,int$flags= 0 [,resource$context]] )

成功会返回写入到文件内数据的字节数,失败时返回false。

使用PHP内置缓存机制实现页面静态化-output_bufferingob函数

ob_start(); 打开输出缓冲区

ob_get_contents(void);返回输出缓冲区内容

ob_clean(void);清空输出缓冲区

ob_get_clean(void);得到当前缓冲区的内容并删除当前输出缓冲区

生成纯静态页面的三种方式:

页面添加缓存时间<?php

//存在index.html并且在有效时间以内(5分钟)if(file_exists('index.html') && (time()-filemtime('index.html') < 300)) {require_once'index.html';

}else{ob_start();//连接数据库获取数据并填充到模板echo'helllo world';file_put_contents('index.html',ob_get_contents());

}?>

手动触发后台手动设置,主动生成

linuxcrontab 定时扫描程序crontab -e //编辑某个crontab文件,文件内容如:*/5 * * * * php执行程序所在目录 /xx/xx.php

http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

4、伪静态

PHP处理伪静态:正则表达式匹配

//http://xxx.cn/xx/test4.php/2/11.html

//http://xxx.cn/xx/test4.php?page=2&id=1,实际的访问路径if(PReg_match('/\/(\d+)\/(\d+).html/',$_SERVER['PATH_INFO'],$matches)){$param['page'] =$matches[1];$param['id'] =$matches[2];

}

Apache下rewrite配置:

http://myapps.com/detail/12.html ==> http://myapps.com/apps/detail.php?id=12(实际访问的路径)

httpd.conf文件:开启LoadModule rewrite_module modules/mod_rewrite.so

extra/httpd-vhosts.conf文件 作如下配置:

<VirtualHost 127.0.0.2:80>

ServerAdmin webmaster@dummy-host2.example.com

DocumentRoot "D:/wamp/www/myProject"

ServerName myapps.com

ErrorLog "logs/dummy-host2.example.com-error.log"

CustomLog "logs/dummy-host2.example.com-access.log" common

RewriteEngine on

#如果detail目录下有12.html文件,就优先访问该目录下的文件

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f

RewriteRule ^/detail/([0-9]*).html$ /apps/detail.php?id=$1

</VirtualHost>

http://www.onexin.net/apache-rewrite-detailed/

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航