原理,将动态的页面,存储为静态的HTML静态页,使浏览器直接请求该静态页。

测试:一个PHP动态页面与一个静态页面所消耗的时间
一般可以使用apache自带的ab(apache bench)程序来测试。 > ab -c 并发数 -n 请求数 请问地址
 
整体统计息:平均每个请求的时间消耗时
响应时间的分区统计:
实现技术
需要的核心技术是ob,output_buffer输出缓冲。
开启输出缓冲
ob_start();
获取内容
ob_get_contents(); 获取内容,不清空缓冲
ob_get_clean(); 获取内容,并清空缓冲
ob_get_flush(); 获取内容,并刷新,让浏览器显示
清空
ob_clean();
ob_get_clean();
ob_end_clean(); 清掉缓冲并关闭
刷新
ob_flush(); 刷新缓冲
ob_get_flush(); 获取缓冲,并刷新
ob_end_flush(): 刷新并关闭缓冲
关闭
ob_end_flush();
ob_end_clean();
(*在脚本周期结束时,刷新操作会自动执行。) <?php
ob_start(); //php执行代码... ... $contents = ob_get_contents();
//生成静态文件的名字和路径可自定义
$staticFile = './html/' . $id . '.html';
file_put_contents($staticFile, $contents);
ob_end_clean(); 扩展问题
1、静态页面中动态数据问题,需要使用ajax。
2、管理大量静态文件时,需要分目录,分硬盘,分文件服务器。
3、整站静态化,内容聚合页和内容详情页,详情页适合做静态化。
4、静态化内容,一旦数据改动,需要重新生成静态页面。

php的静态化的更多相关文章

  1. 利用PHP的ob函数实现生成静态化页面

    之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的.今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下. 经他讲解后,才知道其实生成静 ...

  2. 关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)

    本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部,不过该企业把这个事业部里的人事成本,系统运维成本特别 ...

  3. 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  4. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

  5. JSP页面静态化

    Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...

  6. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)

    页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ①     配置php.ini ...

  7. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(二)

    一:页面静态化 几个概念: 静态网址:(比如:http://localhost/abc.html) 特点:1.利用seo(search engine optimization) 搜索引擎优化;2:访问 ...

  8. 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)

    一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...

  9. php页面静态化技术;学习笔记

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. DEDE整站动态化或整站静态化设置方法,织梦栏目批量静态/动态方法

    跟版网建站接到一个朋友提问,100多各栏目全部要从动态变成静态,里面的文章也要静态化,如何更快捷的设置dede的静态化或者动态化呢? 直接用DEDE后台的SQL命令行工具, SQL语句: DEDE整站 ...

随机推荐

  1. C# AtomicLong

    using System; using System.Threading; /// <summary> /// Provides lock-free atomic read/write u ...

  2. Spark SQL Hive Support Demo

    前提: 1.spark1.0的包编译时指定支持hive:./make-distribution.sh --hadoop 2.3.0-cdh5.0.0 --with-yarn --with-hive - ...

  3. Python模块之shelve

    shelve是python的自带model. 可以直接通过import shelve来引用. shelve类似于一个存储持久化对象的持久化字典,即字典文件. 使用方法也类似于字典. 保存对象至shel ...

  4. express处理跨域问题,中间件 CORS

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 1.不用中间件的话可以这样写: app.all('*', func ...

  5. Java操作Sqoop对象

    Windows下使用Eclipse工具操作Sqoop1.4.6对象 Sqoop是用来在关系型数据库与Hadoop之间进行数据的导入导出,Windows下使用Eclipse工具操作时,需要先搭建好Had ...

  6. SignalR (一)

    关于SignalR 因近期要在项目中使用 SignalR 来开发实时web 程序,可在这之前,对SignalR 的了解并不是很多,甚至不知道 SignalR 到底是用来干什么的,可是在经过这段时间的学 ...

  7. 并发基础(六) 线程Thread类的start()和run()

    start()和run()方法对于刚接触线程的人来说,会有点混淆,有点难理解,一般都会有以下疑问: 一.start( )方法 1.为什么需要start方法:它的作用是什么: start方法的作用就是将 ...

  8. sqlserver操作命令

    启动命令:Net Start MSSqlServer 暂停命令:Net Pause MSSqlServer 重新启动暂停的命令:Net Continue MSSqlServer 停止命令:Net st ...

  9. 34. Studio字符串分割split用法

    var v = "1,2,3"; var arr = v.toString().split(","); 备注:最好先toString()转为字符串,不然有些情况 ...

  10. spring boot 自定义异常

    1.创建一个异常: public class LdapQueryException extends Exception { private Integer code; private String m ...