用缓存实现静态页面的测试

<?php 
function CreateShtml()

{

ob_start(array("callback_CreateShtml","callback_GoToShtml"));

}

function callback_CreateShtml($buffer)[

{

$page = intval(@$_REQUEST["page"]);

$fileName = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm";

$fp = fopen($fileName,"wb");

fwrite($fp,$buffer);

fclose($fp);

return $buffer;

}

function callback_GoToShtml($buffer)

{

$page = intval(@$_REQUEST["page"]);

$fileName = basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm";

header("location:" . $fileName);

return $buffer;

}

function GoToShtml()

{

$page = intval(@$_REQUEST["page"]);

$fileName = basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm";

if(file_exists($fileName))

header("location:" . $fileName);

}

function DeleteShtml($fileName=NULL)

{

if(is_null($fileName))

$fileName = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF'];

if($fileName[0]=="/")

$fileName = $_SERVER['DOCUMENT_ROOT'] . $fileName;

$path = dirname($fileName);

$dir = dir($path);

$patten = "/^" . basename($fileName, ".php") . "(_[0-9]+)?.htm/";

while(($entry = $dir->read())!==false)

{

if(is_file($path . "/" .$entry) && preg_match($patten,$entry))

unlink ($path . "/" . $entry);

}

}

CreateShtml(); 
echo "这是静态生成的页面!$page"; 
GoToShtml(); 
DeleteShtml(); 
?>

(0)

相关推荐

  • 用缓存实现静态页面的测试

    <?php  function CreateShtml() { ob_start(array("callback_CreateShtml","callback_GoToShtml")); } function callback_CreateShtml($buffer)[ { $page = intval(@$_REQUEST["page"]); $fileName = $_SERVER['DOCUMENT_ROOT'] . dirname(

  • 利用php的ob缓存机制实现页面静态化方法

    首先介绍一下php中ob缓存常用到的几个常用函数 ob_start():开启缓存机制 ob_get_contents():获取ob缓存中的内容 ob_clean()清除ob缓存中的内容,但不关闭缓存 ob_end_clean() 清除ob缓存中的内容,并关闭缓存 ob_flush 清空缓存,输出内容,但不关闭缓存 ob_end_flush 清空缓存,输出内容,并关闭缓存 flush强制刷新输出缓存中的内容 按照http协议的规定,回应内容不能在回应头之前输出,所以,如果在header()函数前面

  • php处理静态页面:页面设置缓存时间实例

    通过PHP去生成一个纯静态的页面:http://www.jb51.net/article/116814.htm 问:如何触发系统生成纯静态化页面? 1.页面添加缓存时间 2.手动触发的方式 3.crontab定时扫描程序 我们来实现方案一:页面添加缓存时间 用户请求页面 => 页面是否过期 => => 否(获取静态页面) || =>是(动态页面生成一份新的静态页面) if( 如果存在这个静态文件 && 没有过期){ // 获取页面 }else{ // 重新生成一份静

  • 谈PHP生成静态页面分析 模板+缓存+写文件

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"静态页面话"的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直

  • Nginx设置静态页面压缩和缓存过期时间的方法

    使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css,mp3文件进行本地缓存. 可以通过nginx对服务器上的静态资源进行过期时间设置和对资源进行压缩传输来减少服务器的带宽开销. 以下是nginx对静态资源过期时间的设置方法: location ~* .(ico|gif|bmp|jpg|jpeg|png|swf|js|css|mp3) { root /

  • php 生成静态页面的办法与实现代码详细版

    php中主要用到的就是要用到fread()和fwirte().而静态页面生成了之后,就会牵扯到修改的问题.这里可以用到正则匹配的方法来替换模版中改变的部位.不过此种方法太麻烦,值得推荐的方法是直接把原来生成的模版砍掉,重新生成,呵呵,真正的一了百了. 还需要说明的一点就是,这种生成静态页面的方法一般都用于那些变化不是很频繁的页面,比如信息的最终页面.而针对列表页,如果信息更新不是很频繁的话,也是可取的.现在网上流行好多可以生成静态页面的blog或者论坛程序,都是通过手动点击后台"生成html页&

  • 比较详细PHP生成静态页面教程

    一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客户端提出请求,请求某一页面 -----> WEB服务器引入指定相应脚本进行处理 -----> 脚本被载入服务器 -----> 由服务器指定的PHP解析器对脚本进行解析形成HTML语言形式 ----> 将解析后的HTML语句以包的方式传回给浏览器.由此不难看出,在页面发送到浏览器后,PHP

  • asp 静态页面的另一种思路

    其实这里的静态页面并不是真正意义上的静态,但可以达到了静态页面的解析效率,还未经项目测试,拿来分享. 复制代码 代码如下: <% Const DEVJS_INDEX="index.html" Const INDEX_DEFAULT_INTERVAL=300 Dim sLastUpdate '用Application保存最后更新的时间,而在页面里做判断,每隔300秒(5分钟)就生成一次页面 sLastUpdate=Application("INDEX_LAST_Updat

  • 1个文件如何轻松搞定Asp.net core 3.1动态页面转静态页面

    前言 最近一个Asp.net core项目需要静态化页面,百度查找了一下,没有发现合适的.原因如下 配置麻烦. 类库引用了第三方类,修改起来麻烦. 有只支持MVC,不支持PageModel. 继承ActionFilterAttribute类,只重写了OnActionExecutionAsync,看似静态化了,其实运行时该查数据库还是查数据库,没有真正静态化. 缺少灵活性,没有在线更新静态文件方法,不能测试查看实时页面,没有进行Html压缩,没有使用gzip.br压缩文件. 于是我开始了页面静态化

  • ASP.NET MVC3关于生成纯静态后如何不再走路由直接访问静态页面

    要解决这个问题,我们需要先了解ASP.NET应用程序的生命周期,先看下面作者整理的一张图片: 从图中我们可以清楚的看到:通用IIS访问应用程序时,每次的单个页面URL访问时,都会先经过HttpApplication 管线处理请求,走过BeginRequest 事件之后才会去走路由访问具体的Controller和Action,最后结束的时候会请求EndRequest事件.下面用一张图来表示这个顺序: 注意图中标示的红色部分就是我们要实现的部分,实现如下:1 新建MyHandler.cs 复制代码

随机推荐