php实现静态化总结

简介

PHP的静态化就是将一些不常更新的页面静态化,而非通过动态程序从数据库中取出输出到前台。通过此方法可加快页面响应速度和减轻服务器负载压力。

 

页面静态化操作,包括两种:一种是静态化,一种是伪静态化。静态化又包括:完全静态化和局部静态化。下面逐一进行介绍:

 

完全静态化

就是将整个页面进行静态化,可以使用php缓冲区函数,将缓冲区内容输入到静态文件中。并设置过期时间,若静态文件超出过期时间,则重新进行静态化。


<?php
//页面静态页,一般在MVC框架的控制器中实现。
//譬如:www.test.php/news/view?id=2
//静态化为 www.test.php/news/view_2.html
 
//静态化页面路径
$id = isset($_GET['id']) ? $_GET['id'] : 0;
$filePath = "./news/view_".$id.".html";
 
//过期时间10s
$expire = 10;
 
if (file_exists($filePath)) {
    $ctime = filectime($filePath);
    if (time()-$ctime > 10) {
        //已过期,删除原有文件,并生成新的静态页
        unlink($filePath);
        ob_start();
        include ("./view2.html"); //加载信息页
        $content = ob_get_contents();
        file_put_contents($filePath, $content); //将缓冲区内容输出到静态页
        ob_end_flush(); //刷出缓冲区内容并结束缓冲
    } else {
        include($filePath);
    }
} else {
    ob_start();
    include ("./view2.html"); //加载信息页
    $content = ob_get_contents();
    file_put_contents($filePath, $content); //将缓冲区内容输出到静态页
    ob_end_flush(); //刷出缓冲区内容并结束缓冲
}

 

局部静态化

在完全静态化的基础上,通过ajax处理局部页面。譬如:新闻页如何实现点击量的更新问题?


答:页面的点击量可通过ajax实现,若ajax请求成功,会使当前redis总数量+1,请求成功后会通过jquery,将该静态页面的数量信息进行更新。然后,通过crontab定时任务,定期将redis的数据更新到数据库中。

 

伪静态

指在访问某个页面时时候,若该页面可以正常访问,则通过URL Rewrite的方式进行显示。


譬如:如下通过开启apache的rewrite模块实现。

httpd.conf中去掉 LoadModule rewrite_module modules/mod_rewrite.so前的#。在虚拟站点中配置rewrite规则:

<VirtualHost *:80>  
     DocumentRoot /var/www/project 
     ServerName static.lukexp.com  
     <Directory '/var/www/project'>  
             Options FollowSymLinks  
             AllowOverride None  
             Order Deny,Allow  
             Allow from all  
     </Directory>  
      RewriteEngine on  
     RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f   
     RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d  
     RewriteRule ^/(\w+)/(\d+).htm$ /index.php?act=$1&id=$2  
</VirtualHost>  

 

意思是将act=play&id=2的页面改为index.php/play/2.html

 

静态化的触发方式

静态化有多种触发方式。

  1. 根据过期时间,生成新的静态化页面

  2. 若文章信息发生编辑,则重新生成静态页面

  3. 也可以通过一键更新(类似dedecms方式),其实就是一个php脚本根据数据库信息不断生成新的静态页。

  4. 还可以定时任务进行更新,使用window的计划任务或者Linuxcronjob,定期更新静态页。

     

     

     

参考自:php静态化实现思路


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值