利用PHP的ob函数实现生成静态化页面
之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的。今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下。
经他讲解后,才知道其实生成静态HTML页面很简单。PHP提供了专门的函数来实现。
以下整理出方法(实现生成html这应该只是其中一种方法):
通过php的ob缓存来实现
提高速度
1,通过php的ob缓存来实现
使用php的ob缓存实现页面静态化
修改php.ini配置文件
output_buffering=Off
1,缓存:smarty缓存, ThinkPHP框架的缓存,PHP的ob缓存
(1)ob---缓存,先将输出的数据呢,缓冲到一块空间
然后显示的时候再显示这块空间的缓存的数据
1,ob_start() 先将输出的数据优先放入到 ob缓存中
2,ob_clean() 清空缓存,但是没有关闭
3,ob_end_clean() 清空缓存,同时也关闭缓存
4,ob_flush() 将ob缓存的数据,输出到程序缓存
5,ob_end_flush() 将ob缓存的数据输出到程序缓存并且关闭ob缓存
(1)程序缓存
就是如果没有开启ob缓存,先将数据缓存到程序中,等echo都完了,再统一的输出
浏览器也有缓存:
浏览器先攒着数据,等达到一定的数量之后(ie 500多MB)的时候才输出
代码如下:
<?php
header('Content-type:text/html; charset=utf-8');
/**
ob_start():是打开缓冲区的,就是要把您需要生成的静态文件的内容缓存在这里;
ob_get_contents():是读出缓冲区里的内容,下面有代码为例;
ob_end_clean():这个比较重要,只有使用了这个函数后,缓冲区里的内容才会读取出来 */
if(file_exists('./index.html')) //静态index.html文件是否存在
{
$time = time(); //文件修改时间和现在时间相差的话,直接导向html文件,否则重新生成htm if($time-filemtime('./index.html') < 60)
{
header('Location:./index.html');
}
} //开始处加入ob_start();
ob_start(); //开启php的ob缓存,这些数据放到ob缓存中,没有开启ob缓存,然后放到程序缓存中 //动态部分内容
?>
<html>
<head>
<meta charset="utf-8" />
<title>Hello</title>
<style>
body{ background:black;color:white;font-size:20px;}
</style>
</head>
<body>
<p align="center">PHP生成HTML文件....</p>
</body>
</html>
<?php
//在结尾加入ob_end_clean(),并把本页输出到一个变量中
$htmlStr = ob_get_contents(); //获得缓存中的数据
ob_end_clean(); //写入文件
$fp = fopen('./index.html', 'w');
fwrite($fp, $htmlStr) or die('写文件错误'); echo "生成HTML完成!";
利用PHP的ob函数实现生成静态化页面的更多相关文章
- springboot2.0结合freemarker生成静态化页面
目录 1. pom.xml配置 2. application.yml配置 3. 使用模板文件静态化 3.1 创建测试类,编写测试方法 3.2 使用模板字符串静态化 使用freemarker将页面生成h ...
- JSP生成静态Html页面
[转载]JSP生成静态Html页面 在网站项目中,为了访问速度加快,为了方便百度爬虫抓取网页的内容,需要把jsp的动态页面转为html静态页面.通常有2种常用的方式: 1.伪静态,使用URL Rewr ...
- 用php生成静态html页面(通用2种方法)
因为每次用户点击动态链接的时候都会对服务器发送数据查询的要求 对于一个访问量可能达百万千万级别的网站来说 这无疑是服务器一个大大的负担 所以把动态数据转换成静态html页面就成了节省人力物力的首选 因 ...
- 首页自动生成静态化html
由于平台老是出现间歇性502.排查发现,php死进程过多耗费大量系统资源. 除了优化代码之外,静态化可以减少php进程.缓解一下服务器压力. 把首页生成html后,出现问题频率下降.所以需要做首页静态 ...
- java 企业网站源码模版 有前后台 springmvc SSM 生成静态化
java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 系统介绍 点击:获取地址 : 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态 ...
- java使用freemarker生成静态html页面
1. 模板文件static.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- 【转载】JSP生成静态Html页面
在网站项目中,为了访问速度加快,为了方便百度爬虫抓取网页的内容,需要把jsp的动态页面转为html静态页面.通常有2种常用的方式: 1.伪静态,使用URL Rewriter 2.纯静态,本文中代码实现 ...
- java自适应响应式 企业网站源码 SSM freemaker生成静态化 手机 平板 PC springmvc
java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 前台: 支持两套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用 ...
- java自适应响应式 企业网站源码 SSM 生成静态化 手机 平板 PC
java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成ht ...
随机推荐
- php下载远程文件方法~
直接上代码: getFile("http://easyread.ph.126.net/N8gDl6ayo5wLgKbgT21NZQ==/7917056565549478184.jpg&quo ...
- Java课程设计--山寨版QQ
Java课设要求做一个聊天通讯窗口,索性直接照着QQ撸了一个Demo出来 界面高仿qq,初学JAVA,技术比较渣,不喜勿喷 线程开的比较多性能不是太好,一般电脑开两个客户端聊天就卡卡的 先上图 使用方 ...
- 20个Mac用户必须掌握的触摸手势
我第一次接触MacBook时,最令我惊叹的就是MacBook的触摸板,通过各种手势,完全可以不用鼠标,且有些时候更加的快捷和方便.那么都有哪些手势呢?可以通过 -> 来查看学习各种手势的使用,下 ...
- checked 全选 反选 示例
不多说看例子: 右上侧全选,然后每个栏又有一个栏目全选. 反选解决办法: function selectSubscibe(_class) { $("." + _class + &q ...
- centos系统/etc/sysconfig/目录下无iptables文件
原因一般是没有配置过防火墙,在安装linux系统时也已经禁掉了防火墙 随便写一条iptables命令配置个防火墙规则:如: iptables -P OUTPUT ACCEPT 然后用命令:servic ...
- shell 多行注释
:<<! 要注释的内容 要注释的内容 要注释的内容 !
- 自定义注解之运行时注解(RetentionPolicy.RUNTIME)
对注解概念不了解的可以先看这个:Java注解基础概念总结 前面有提到注解按生命周期来划分可分为3类: 1.RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成clas ...
- ESXI6.0启用 snmp
1.首先通过ILO登录远程控制桌面然后按F2输入密码后进入 2.开启shell 3.按住 Alt + F1 切换到shell 4.启用 snmp esxcli system snmp set -- ...
- Linux中不同主机建立免登陆
ssh-keygen -t rsa scp /root/.ssh/id_rsa.pub root@192.168.0.236:/root/.ssh/authorized_keys cat /root ...
- 利用set排序数组并且去掉重复的数组元素
public class testList { public static void main(String[] args){ java.util.List<String> ls = ne ...