为了账号安全,请及时绑定邮箱和手机立即绑定

PHP实现页面静态化课程-简单小结

标签:
PHP

关于静态

  • 动态页面与静态页面
    1、动态文件执行过程:语法分析-编译-运行
    2、静态文件,不需要编译,直接运行。
    静态文件不去进行语法分析和编译,直接去运行就可以了,所以加载静态文件要比动态文件要快
  • 优化页面响应时间
    1、动态页面静态化
    2、优化数据库
    3、使用负载均衡
    4、使用缓存
  • 静态与伪静态
    1、从URL结构以及页面名称看,伪静态和静态页面是一样的。伪静态的页面后缀可以是html htm 或者是目录格式
    2、伪静态只是改变了URL的表现形式,实际上还是动态页面
    3、静态页面可以节省服务器资源,而伪静态严格说是增加服务器资源消耗的
    总结,在SEO方面,伪静态和静态页面的功能是相同的,但是伪静态本质上还是动态页面,所以消耗资源是和动态页面一样的,而且因为Rewrite服务器还需要消耗额外的资源。
  • 静态化类别
    1、全部静态化
    2、局部静态化(使用ajax)
    3、伪静态

    buffer介绍

  • buffer
    缓冲区开启,所有输出的内容先存到内部缓冲区;
    缓冲区流程:内容-buffer-tcp-客户端
    1、php.ini文件中output_buffering=off,在程序前写入ob_strat();内置函数即可
    2、php.ini文件中output_buffering=on,即开启时,直接使用ob_get_contents();获的缓冲区内容
    如:file_put_contents("output.html", ob_get_contents());
    // 将当前的php缓存(output_buffering)内容输出到output.html文件中。
  • buffer函数
    1、ob_start() 打开输出缓冲
    2、ob_get_contents() 得到当前缓存去内容
    3、ob_clean() 清空当前缓存区
    4、ob_get_clean() 相当于 ob_get_contents() + ob_clean() 两个函数的功能
    的缓存区内容 并清空当前缓存区
  • php实现静态化
    PHP实现页面静态化有一下步骤:
    1:A.php请求数据库数据:通过mysql或者mysqli或者PDO扩展
    2:在B.html中输出A.php请求的数据库数据:一般是将将在数据库中取出的数组形式的数据赋予新的数组,并且输出
    3:在A.php中包含B.html文件:直接通过require_once()函数或者inclde_once()
    4:开启数据缓存ob_start()=>获取获取缓存内容并且将数据生成在静态文件中file_put_contents('index.shtml',ob_get_clean());

    生成静态页面三种方式

  • 页面添加缓存时间
    1. 用户请求页面
    2. 判断页面缓存文件是否存在是否过期,主要看页面的最后修改时间,使用filemtime
    3. 如果没有过期则获取静态页面,如果过期了则重新生成一个静态页面
      if(is_file('./index.shtml') && (time() - filemtime('./index.shtml')) < 300) {
      require_once('./index.shtml');//filemtime();获取文件最后修改时间
      } else {
      ...
      }
  • 手动触发
    类似dedecms
  • crontab定时扫描程序
    crontab定时扫描
    /5 * php /data/www/demo/index.php 每5分钟
    分 时 日 月 周
    新建: crontab -e
    查看 crontab 日志文件 tail -f /var/log/cron.log

    伪静态

  • php处理伪静态
    通过php的正则判断来实现
  • apache伪静态
    1、开启重写模块
    打开httpd.conf文件
    开启模块:LoadModule rewrite_module modules/mod_rewrite.so
    开启文件:Include conf/extra/httpd-vhosts.conf
    2、重写规则
    找到文件:httpd-vhosts.conf配置相关的文件信息
    //开启
    RewriteEngine on
    //开启,能自动识别存在的目录文件
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    //开启,定义伪静态的规则(如果不存在,则执行下面的伪静态规则)<br>
    RewriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1<br>
    //在浏览器地址栏输入2.html,会自动执行detail.php并传递浏览器传递过来的id,我们可在detail.php输出
  • nginx伪静态
    nginx下rewrite配置
    rewrite ^/detail/(\d+).html$ /detail.php?id=$1 last;
    1、通过xshell连接虚拟机
    cd /etc/nginx/conf.d
    sudo vim static.singwa.com.conf
    在server->location->if语句里插入下面这段代码:
    rewrite ^/detail/(\d+).shtml$ /detail.php?id=$1 last;
    2、编写detail.php代码
    cd /data/static/
    sudo vim detail.php
    <?php
    echo "nginx: this id is ".$_GET['id'];
    3、重启nginx服务器
    sudo service nginx restart
    注:该文章为观看“PHP实现页面静态化"课程后,大量参考学者们的笔记并加以整合的一篇文章,以供大家参考及补充。
点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
14
获赞与收藏
307

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消