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


Posted in PHP onJune 22, 2017

通过PHP去生成一个纯静态的页面:https://3water.com/article/116814.htm

问:如何触发系统生成纯静态化页面?

1.页面添加缓存时间

2.手动触发的方式

3.crontab定时扫描程序

我们来实现方案一:页面添加缓存时间

用户请求页面 => 页面是否过期 => => 否(获取静态页面) || =>是(动态页面生成一份新的静态页面)

if( 如果存在这个静态文件 && 没有过期){
  // 获取页面
}else{
  // 重新生成一份静态页面
}

ok,基本逻辑就是如此,下面我们完善代码:

<?php

if(is_file('./index.html') && (time()-filemtime('./index.html')) < 60){ 
  // 假设缓存时间是60秒
  // 获取页面
  require_once('./index.html');
}else{
  // 重新生成一份静态页面
  // 准备要展示到网页的数据
  $data = array( 
    array('id'=>1,'msg'=>'hello java'),
    array('id'=>2,'msg'=>'hello php'),
    array('id'=>3,'msg'=>'hello python'),
  );

  // 渲染到模板
  // 实际项目一般是在html里渲染
  // 这里演示 希望能看懂

  ob_start(); // 开始输入缓冲控制

  foreach($data as $item){
    echo $item['id'].'===>'.$item['msg'].'<br/>';
  }

  // 开始生成静态页面文件
  file_put_contents('index.html',ob_get_contents());
}

这样我们访问index.php,如果静态文件缓存没有过期,其实质访问的内容来自index.html这个静态文件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
php猜单词游戏
Sep 29 PHP
php图像验证码生成代码
Jun 08 PHP
php实现支付宝当面付(扫码支付)功能
May 30 PHP
PHP内存溢出优化代码详解
Feb 26 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 #PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 #PHP
PHP简单装饰器模式实现与用法示例
Jun 22 #PHP
PHP实现的简单适配器模式示例
Jun 22 #PHP
php smtp实现发送邮件功能
Jun 22 #PHP
php实现页面纯静态的实例代码
Jun 21 #PHP
详解php实现页面静态化原理
Jun 21 #PHP
You might like
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
php导入导出excel实例
2013/10/25 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
任意位置显示html菜单
2007/02/01 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
python登录QQ邮箱发信的实现代码
2013/02/10 Python
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
买卖合同协议书范本
2014/10/18 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
人口与计划生育责任书
2015/05/09 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL