php网页静态化与伪静态

谭佳成
2016-03-07
(79)

关于优化页面响应时间

  • 动态页面静态化

  • 优化数据库

  • 使用负载均衡

  • 缓存

php页面静态化结构示意图

php.png

PHP文件执行顺序

动态网页:语法分析->编译->运行->显示展示;

静态网页(纯html文件):运行->显示展示;由此可见实现网页静态化可大大加快网页访问速度

BUFFER

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

输出流程:内容->php buffer(output_buffer)->tcp->终端

PHP如何实现页面纯静态化

基本方式:

  1. file_put_content()函数,当然可以使用fwrite(),但是使用fwrite()有打开,写入,关闭三个步骤,建议使用file_put_content()

  2. 使用PHP内置缓存机制实现页面静态化,php.ini中打开output_buffing,php5.2以上版本默认打开,主要涉及函数:ob_start打开输出控制缓冲,即手动打开output_buffing、ob_get_contents返回输出缓冲区内容、ob_clean清空输出缓冲区、ob_get_clean得到当前缓冲区内容并删除当前输出缓冲区

实例

  1. 连接数据库,从数据库获取数据

  2. 将获取到的数据’填充‘到对应模块

  3. 主要把动态的页面转化为静态页面,生成存静态化文件

示例部分代码:

ob_start();//开启output_buffing,php.ini中已配置打开可以忽略
require_once('模板文件路径');
if(file_put_content('文件名',ob_get_clean())){
//do something}else{
//do something
}

如何触发系统生成纯静态化页面

  • 页面添加缓存时间

  • 手动触发方式

  • Linux系统下的crontab定时扫描命令

页面添加缓存时间

实现示意图

method1.png部分代码:

注,filemtime()为获取文件被修改时间函数
if(is_file('缓存文件路径') && (time()-filemtime('缓存文件路径')) < 300>
require_once('缓存文件路径');
}else {
ob_start();//开启output_buffing,php.ini中已配置打开可以忽略
require_once('模板文件路径');
file_put_content('缓存文件名',ob_get_contents());
}

手动触发纯静态页面(用户直接访问的是纯静态文件)

需要后台开发一个更新机制,比如dedecms二次开发

Linux系统下的crontab定时扫描命令

*/5****/ php/static/index.php 表示每5分钟访问这个文件

*/5****/ 对应   分时日月周

局部动态化

  • ajax,接口返回数据,js相关函数

伪静态(有利于搜索引擎的收录,提高网站排名)


  • path_info模式

  • nginx服务器默认下不支持path_info模式,需要配置

apache下配置伪静态

apacha配置文件打开rewrite_module模块和vhost_alias_module模块,在httpd-vhosts.conf文件下新建虚拟主机,并添加以下代码

RewriteEngine on//开启重写引擎
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d//如果匹配到该路径有文件就执行该文件
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f//如果匹配到该路径有文件就执行该文件
RewriteRule ^/detail/(\d+).html$ /detail.php?id=$1//将id后的值匹配给前面的正则表达式

也可以直接在项目根目录创建.htaccess文件,然后把上面代码写里面保存,不用再到httpd-vhosts.conf文件编辑,关于如何创建.htaccess文件自行百度:)

实际用途,php的preg_match()函数,preg_match('正则表达式',$_SERVER['PATH_INFO'],$arr),获取$arr的值就知道该怎么做了。。。

Nginx下配置伪静态

rewrite ^/detail/(\d+)
rewrite ^/detail/(\d+)\.html$ /detail.php?id=$1 last;


如无说明,本站文章均为原创,转载或引用注明来源:https://93jc.cn/article/24.html


上一篇:php性能优化

下一篇:php多文件上传