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 相关文章推荐
php 模拟POST|GET操作实现代码
Jul 20 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 PHP
PHP对文件进行加锁、解锁实例
Jan 23 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
浅谈PHP无限极分类原理
Mar 14 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
图书管理程序(一)
2006/10/09 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
python计算书页码的统计数字问题实例
2014/09/26 Python
python根据路径导入模块的方法
2014/09/30 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
python统计日志ip访问数的方法
2015/07/06 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
会计学个人自荐信模板
2013/12/13 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
入党介绍人意见2015
2015/06/01 职场文书
植物园观后感
2015/06/11 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python