zoukankan      html  css  js  c++  java
  • PHP扩展功能 ---- 页面静态化(OB缓冲)

    一、入门三部曲

    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等)引入路径的变化

  • 相关阅读:
    How to check a not defined variable in javascript
    How to scroll the window using JQuery $.scrollTo() function
    jQuery图片滑动
    分享一个提供各种尺寸图片的网站
    页面添加 mask 遮罩层
    input, textarea,监听输入事件
    Google jQuery URL
    在页面内, 滑块位置的控制
    jQuery autoResize
    jQuery banner 滑动
  • 原文地址:https://www.cnblogs.com/zqunor/p/8672449.html
Copyright © 2011-2022 走看看