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

yipeiwu_com6年前PHP代码库

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的方法,对于页面数量不大的话,第一种方法还是不错的。

相关文章

phpMyAdmin通过密码漏洞留后门文件

phpMyAdmin通过密码漏洞留后门文件

默认 phpMyAdmin:用户名 root 密码 root 或空登陆。 版本 2.11.3~2.11.4:用户名 'localhost'@'@" 登陆,无需密码。 版本...

PHP迅雷、快车、旋风下载专用链转换代码

复制一下代码,保存为cs.php即可,若要保存为其他名字,注意修改<form action=cs.php method=GET>这一行 复制代码 代码如下: <?php...

解析PHP中intval()等int转换时的意外异常情况

先看看下面的网上的一个测试代码:复制代码 代码如下:<?php$a = 9.45*100;var_dump($a);var_dump(intval($a));$a = 945*1....

php中strtotime函数性能分析

最近在做一个游戏数据统计后台,最基础的功能是通过分析注册登录日志来展示用户数据。在公司内部测试,用户量很少,所以就没有发现什么性能问题。但是这两天一起放到真实的测试环境,用户量噌噌地就涌...

Windows下的PHP5.0详解

PHP5包括以下一些重要的特征:    ·支持新的对象模型和许多新特点的Zend引擎。   ·完全重新编写了XML支持,扩展性能围绕着优秀的libxml2库(http://ww...