PHP 实现页面静态化的几种方法


Posted in PHP onJuly 23, 2017

1、通过buffer来实现

需要用file_put_contents ob_get_clean()等内置函数

ob_start ();
include "filterpost.html";
$mtime = filemtime("./filterpost.html");//在这里可以判断文件是否存在和过期,然后做缓存或者生成静态文件操作
$pageCache = str_replace('submit2','login',ob_get_contents());//将缓存去中的内容替换
ob_end_clean();
echo $mtime;
echo $pageCache;

2、通过$_SERVER['PATH_INFO']来实现

echo '<pre>';
print_r($_SERVER);
preg_match('/^\/(\d+)\/(\d+)\.html/',$_SERVER['PATH_INFO'],$arr);
print_r($arr);

3、通过Apache配置来实现

需要开启rewrite重写模块
通过rewrite来配置vhost

RewriteEngine on 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1

如果服务器下不存在文件夹及其文件,那么就重写定义到/detail.php
http://localhost/detail/1.html
如果没有detail文件夹下的1.html 那么就重写定义到./detail.php

4、通过Nginx配置来实现

 在nginx.conf中配置 

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

当然建议大家参考一些比较成熟的cms的方法,对于页面数量不大的话,第一种方法还是不错的。

PHP 相关文章推荐
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
PHP Directory 函数的详解
Mar 07 PHP
基于php缓存的详解
May 15 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
学习PHP Cookie处理函数
Aug 09 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 PHP
php中array_fill函数的实例用法
Mar 02 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 #PHP
php魔法函数与魔法常量使用介绍
Jul 23 #PHP
php curl上传、下载、https登陆实现代码
Jul 23 #PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 #PHP
laravel自定义分页效果
Jul 23 #PHP
PHP批量删除jQuery操作
Jul 23 #PHP
PHP mysqli事务操作常用方法分析
Jul 22 #PHP
You might like
php把数组值转换成键的方法
2015/07/13 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
php实例化一个类的具体方法
2019/09/19 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
深入解析ES6中的promise
2018/11/08 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
Python学习思维导图(必看篇)
2017/06/26 Python
答题辅助python代码实现
2018/01/16 Python
详解python中的线程
2018/02/10 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
python re的findall和finditer的区别详解
2020/11/15 Python
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
幼儿园小班教学反思
2016/03/03 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
Vue+Flask实现图片传输功能
2022/04/01 Vue.js