一、入门三部曲

1、什么是页面静态化

百度百科介绍

    静态页面是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页,静态页面网址中一般不含“?”、“=”、“&”等特殊符号。静态页面不能自主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改(通过fso等技术例外) 常见的静态页面举例:.html扩展名的、.htm扩展名的。
注意:静态页面并非网站上没有动画的就是静态页面。

简而言之:页面静态化是将html页面中需要动态获取的数据以具体形式存在于html页面,访问页面时不需要再动态获取(查询数据库)相关数据。

2、为什么要用页面静态化

  • URL美观 --- 静态页面不再需要使用?、&、=之类的符号
  • 便于搜索引擎收录 --- 搜索引擎对动态页面的收录率很低,而对静态页面收录较好
  • 提高程序性能 --- 对于频繁访问且数据没有更新的页面,使用静态化可一定程度上降低计算机程序的访问负荷,提高性能

3、怎么实现页面静态化?

使用OB缓冲技术(Output Buffering)

实现原理

php向客户端回应数据的时候,如果开启了缓冲,先将回应的数据输出到缓冲中

  • 回应数据包括: echo ''' var_dump(); require ''

二、页面静态化在PHP中的应用

1、必备函数:

(1)ob_start() --- 开启ob缓冲

(2)ob_get_contents() --- 读取缓冲内容

(3)ob_get_length() --- 获得缓冲中内容的长度

(4)ob_flush() --- 冲刷出(送出)输出缓冲区中的内容

(5)ob_get_flush() --- 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。

(6)ob_clean() --- 清空(擦掉)输出缓冲区

(7)ob_get_clean() --- 得到当前缓冲区的内容并删除当前输出缓。

(8)ob_end_clean() --- 清空(擦除)缓冲区并关闭输出缓冲

(9)ob_gzhandler() --- 压缩输出缓冲区中内容

2、OB缓冲相关介绍

(1)OB多缓冲

每次调用ob_start()都会开启一个缓冲区域,形成多缓冲,但每次操作的都是就近的缓冲

(2)OB缓冲处理器

就是一个函数,当缓冲区域的内容被刷出的时候自定调用的函数

如:

ob_start(ob_gzhandler);
echo str_repeat('Hello World!<br>',1000);

此时将ob_gzhandler()作为回调函数,对缓冲区域进行压缩,一定程度上节省存储空间。

(3)ob缓冲和php程序缓冲的区别

  • php程序缓冲flush():自动使用,内置的,访问视频等资源时会自动使用。
  • ob缓冲:可以进行设置开启或关闭。

3、实现页面静态化

(1)何时生成静态页面?

  • 提交表单,获取到表单提交的数据后。

(2)怎么生成静态页面?

  • 首先将需要的动态数据获取到,并分配到模板中
  • 然后通过模板引擎(Smarty)获取到html内容
  • 再读取缓冲内容
  • 最后将缓冲内容保存为静态html文件。
// 1.首先将需要的动态数据获取到,并分配到模板中
$this->smarty->assign('user', $user);
$this->smarty->assign('list',$list); // 2.然后通过模板引擎(Smarty)获取到html内容
$content = $this->smarty->fetch('index/index.html'); // 3.再读取缓冲内容
$res = ob_get_contents(); // 4. 最后将缓冲内容保存为静态html文件
file_put_contents('./newIndex.html', $res);

(上述代码只是模拟过程)

【注】:

(1)需要将静态文件的url路径保存到数据库,并作为下次访问时的请求地址。

(2)生成静态文件后注意资源(css,js,img等)引入路径的变化

PHP扩展功能 ---- 页面静态化(OB缓冲)的更多相关文章

  1. 利用php的ob缓存机制实现页面静态化

    利用php的ob缓存机制实现页面静态化 首先介绍一下php中ob缓存常用到的几个常用函数ob_start():开启缓存机制ob_get_contents():获取ob缓存中的内容ob_clean()清 ...

  2. 使用ob缓存简单实现页面静态化

    <?php //接收新闻id,传统的方法查询数据库并显示数据 $id=intval($_GET['id']); //先判断该新闻对于的静态页面是否存在,如果有,则直接返回,如果 //没有,则查询 ...

  3. php的ob实现页面静态化

    php页面静态化的原理,用最少的代码解释页面静态化 如何应用:在插入或更新数据到数据库时,就执行一下代码是一种比较好的方法.比如:php执行add()方法时(就是插入数据时) //开启缓存 Ob_st ...

  4. php页面静态化

    如何优化页面响应时间: 动态页面静态化 优化数据库 使用负载均衡 使用缓存 如果页面中的一些内容不经常改动,可以使用动态页面静态化.好处是:减少服务器脚本的计算时间:降低服务器的响应时间. 1.动态U ...

  5. PHP 实现页面静态化

    PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...

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

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

  7. 基于 ThinkPHP 3.2.3 的页面静态化功能的实现

    PHP 的页面静态化有多种实现方式,比如使用输出缓冲(output buffering),该种方式是把数据缓存在 PHP 的缓冲区(内存)中,下一次取数据时直接从缓冲区中读取数据,从而避免了脚本的编译 ...

  8. 页面静态化3 --- 使用PHP页面缓存机制来完成页面静态化(下)操作一个案例(新闻管理系统)

    案例需求: 使用PHP缓存机制完成新闻管理系统的页面静态化数据库表 ecs_article (新闻表)因为新闻这些信息,并不是对实时性要求高,本身这个新闻比较稳定,内容也比较固定,所以我们考虑: 当第 ...

  9. 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)

    我们可以使用PHP自带的缓存机制来完成页面静态化,但在这里,需要说明一点,仅靠PHP缓存机制并不能完美的解决页面静态化,往往需要和其他页面静态技术(通常是伪静态技术)结合使用 例子: 当访问一个页面时 ...

随机推荐

  1. php中怎么导入自己写的类

    如果写的类是写在当前php文件内,就直接实例化若你的类写在其他的php文件里,就要先用include或require,将类文件引入<?php include("class.php&qu ...

  2. ionic —指令

    引用 <!--1.引入 ionic css和js--> <!--2.定义ng-app--> <!--3.定义 angular.module('myAPp',['ionic ...

  3. RGB与INT类型的转换

    开发时遇到的问题,设置图层样式时颜色的返回值是uint,一时不知改怎么转换为C#常用的RGB值了. 一番百度,结果如下: RGB = R + G * 256 + B * 256 * 256 因此可得到 ...

  4. python判断一个数字是整数还是浮点数&判断整除

    判断整数还是浮点数   >>> a=123 >>> b=123.123 >>> isinstance(a,int) True >>&g ...

  5. How To Manage StartUp Applications In Ubuntu

    Ever felt the need to control startup applications in Ubuntu? You should, if you feel that your Ubun ...

  6. 公司企业邮箱被qq邮箱拒绝后

    公司新弄了服务器,建了exchange server,通知全公司试用时发现给客户群发邮件会被拒绝,返回的错误信息是 550 Mail content denied 出错原因:该邮件内容涉嫌大量群发,并 ...

  7. 《APP移动终端决胜之道视觉设计艺术》学习笔记

    1.20-2.9 1.合理的层级化2.信息的整合(短信收发件箱),信息的整合就像创建文件夹,可以将相关的东西放在一起,以便于使用者搜索与查找3.(微信聊天界面)相比之下使用了对话框图形的界面,元素更加 ...

  8. centos django+Nginx+uwsgi部署

    第五天 部署python3+uwsgi+nginx的博客系统 ================================ mysql基本命令 mysql mysql -p mysqladmin ...

  9. oracle基础之游标的理解与使用

    关于游标,首先要知道游标的定义. 游标,是内存中的一款区域,用来存放select的结果集 游标用来处理从数据库中检索的多行记录(使用select语句).利用游标,程序可以逐个的处理和遍历一次索引返回的 ...

  10. Spring MVC基本配置和实现(三)

    Item public class Item { private Integer id; private String name; public Integer getId() { return id ...