之前用过一些开源的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函数实现生成静态化页面的更多相关文章

  1. springboot2.0结合freemarker生成静态化页面

    目录 1. pom.xml配置 2. application.yml配置 3. 使用模板文件静态化 3.1 创建测试类,编写测试方法 3.2 使用模板字符串静态化 使用freemarker将页面生成h ...

  2. JSP生成静态Html页面

    [转载]JSP生成静态Html页面 在网站项目中,为了访问速度加快,为了方便百度爬虫抓取网页的内容,需要把jsp的动态页面转为html静态页面.通常有2种常用的方式: 1.伪静态,使用URL Rewr ...

  3. 用php生成静态html页面(通用2种方法)

    因为每次用户点击动态链接的时候都会对服务器发送数据查询的要求 对于一个访问量可能达百万千万级别的网站来说 这无疑是服务器一个大大的负担 所以把动态数据转换成静态html页面就成了节省人力物力的首选 因 ...

  4. 首页自动生成静态化html

    由于平台老是出现间歇性502.排查发现,php死进程过多耗费大量系统资源. 除了优化代码之外,静态化可以减少php进程.缓解一下服务器压力. 把首页生成html后,出现问题频率下降.所以需要做首页静态 ...

  5. java 企业网站源码模版 有前后台 springmvc SSM 生成静态化

    java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 系统介绍 点击:获取地址 : 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态 ...

  6. java使用freemarker生成静态html页面

    1. 模板文件static.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  7. 【转载】JSP生成静态Html页面

    在网站项目中,为了访问速度加快,为了方便百度爬虫抓取网页的内容,需要把jsp的动态页面转为html静态页面.通常有2种常用的方式: 1.伪静态,使用URL Rewriter 2.纯静态,本文中代码实现 ...

  8. java自适应响应式 企业网站源码 SSM freemaker生成静态化 手机 平板 PC springmvc

    java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 前台: 支持两套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用 ...

  9. java自适应响应式 企业网站源码 SSM 生成静态化 手机 平板 PC

    java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成ht ...

随机推荐

  1. awk命令和grep命令的使用

    1.遇到需求:用ping命令去检测系统网络延迟 跑 ping baidu.com -c 3,想要直接得到平均延迟. ping baidu.com -c 3 | grep rtt | awk -F \/ ...

  2. SQL分组多列统计(GROUP BY后按条件分列统计)

    as tjsl from fyxx group by zt,whbmbh end) as ybhsl from fyxx group by whbmbh 下面是摘自别人的博客 最近遇到一个问题,需要对 ...

  3. C语言 活动安排问题之二

    有若干个活动,第i个开始时间和结束时间是[Si,fi),活动之间不能交叠,要把活动都安排完,至少需要几个教室? #include <stdio.h> #include <string ...

  4. infoq 微信后台存储架构

    infoq 上微信后台存储架构 视频很是值得认真一听,大概内容摘要如下: 主要内容:同城分布式强一致,园区级容灾KV存储系统 - sync 序列号发生器      移动互联网场景下,频繁掉线重连,使用 ...

  5. WCF调用

    1.找到服务中的point终结点 2.添加服务地址就可以了

  6. linux无法挂载u盘

    一般插入u盘都会自动挂载,但有时挂载不了,错误提示:can't find /dev/sdb in /etc/fstab:这时可能是U盘坏了,我们当然不希望是这样.也有可能是U盘使用的接口不对应导致系统 ...

  7. 用DllImport引用的外部DLL文件如何通过clickonce发布

    在.net中非托管代码或非COM组件的外部DLL文件只能用DllImport的方式使用,但是在clickonce方式发布时不会自动包含到发布清单中去,办法是在项目中先把外部DLL文件作为普通文件添加进 ...

  8. 【Django】--基础知识

    一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. Web应 ...

  9. scp 从远程服务器上一下载文件

    scp -P202 xx3.x6.xx.xx:/usr/local/zookeeper-.zip /tmp #指定远程服务器的端口和远程服务器的目标文件 ,最后指定要下载到本的地目录 也可以从远程服务 ...

  10. tif文件导入postgresql

    raster2pgsql -I -F -N -999  文件名  数据库名 | psql -U postgres -d postgres