您现在的位置是:网站首页 > 心得笔记

PHP页面静态化

盛悦2019-02-26783人围观
简介使用场景:如果页面中有一些内容不经常改动,动态页面静态化是非常有效的加速方法。

1.为什么要静态化页面?

静态化页面是指将动态生成的网页在服务器端生成为静态的HTML文件,然后直接返回给用户访问,而不是在每次用户请求时都重新生成。这样做的好处主要有:

1.提高网站的响应速度和性能。由于不需要在每次用户请求时重新生成页面,因此可以极大地减少服务器的负担,提高网站的访问速度和性能。
2.提高用户体验。由于静态页面不需要再次进行数据处理和渲染,因此用户可以更快地获取到所需的内容,提高用户体验。
3.降低网站运维成本。静态页面不需要数据库和程序的支持,因此可以降低网站的运维成本和维护成本。


2.如何实现页面静态化?

主要思路是将动态页面生成为静态的 HTML 文件,然后保存到服务器上,下次用户访问时直接读取文件返回给用户

具体实现步骤



3.页面的分类

1.动态页面:当我们加载页面时 它会首先去执行动态文件中的动态程序,这些动态程序主要有jsp asp php等
 动态文件执行阶段:语法分析-》编译-》运行
2.静态页面:其实就是一个全静态的html文件  这个文件里的程序都是以html的语言格式呈现的
 静态文件执行阶段:直接运行


4.如何优化页面响应时间

1.动态页面静态化(这里主要讲解的是动态页面静态化)
2.优化数据库
3.优化接口
4.使用缓存


5.动态页面静态化

  1. 使用场景

    如果页面中有一些内容不经常改动,动态页面静态化是非常有效的加速方法。比如新浪首页www.sina.com.cn 它实际执行的首页文件就是index.shtml

  2. 实质

    生成静态的html文件

  3. 好处

      减少服务器脚本的计算时间

      降低服务器的响应时间


6.关于动态url地址设置静态形式

动态url地址:https://www.blong.tech/act?orgId=2212&orgName=yahan

静态url地址:https://www.blong.tech/yahan-act-2212.html

问题1:是不是我把动态地址转化为静态地址后,再去访问静态地址这个页面,它呈现的内容就是静态页面呢?

答案1:加载的内容不是静态页面。转换静态地址之后,他的根还在动态页面  加载之后还是动态页面的形式

问题2:动态地址怎么转静态地址?

答案2:是通过服务器配置的

把动态url转换为静态url的过程,称之为“伪静态”!


7.静态化介绍

纯静态:它其实就是纯净态的html文件 他是通过PHP程序去生成的静态html文件 前端访问时 其实是去加载我们生成好的html文件

局部纯静态:也可以理解为局部动态化  如果静态化页面中存在局部动态化的内容,就称为局部纯静态

比如说新浪体育台下的数据就是动态数据。这块数据使用ajax从服务器获取数据 再通过js将数据填充到页面中

伪静态:其实就是把我们动态页面url地址转化为静态页面的url地址,需要服务器配置

8.ob缓存认识

1.ob缓存认识
ob就是output_buffering:输出缓存
如果ob(函数ob_start())缓存打开,则echo的数据首先放在ob缓冲区,php执行完毕后,会把ob缓存中的数据移到程序缓存,然后依次返回给
浏览器缓存

2.ob缓存重要的几个函数
ob_start() 打开输出控制缓冲(要求PHP开启缓存,在PHP配置文件php.ini中设置output_buffering=on)
ob_get_contents() 返回输出缓冲区内容
ob_clean() 清空(擦掉)输出缓冲区
ob_get_clean() 得到当前缓冲区的内容并删除当前输出缓冲区  等价于ob_get_contents和ob_end_clean
file_put_contents('文件路径','文件内容')

9.纯静态化实现

PHP实现纯静态化的最终目的是生成一个纯静态的html页面存放在磁盘!

步骤:

步骤一:连接数据库,从数据库中查询数据

步骤二:把获取到的数据填充到模板文件

步骤三:需要把动态的页面转为静态页面——生成纯静态化文件

laravel框架中生成静态页面代码实例(我这里是在本地环境下测试的):

<?php 
$gid = $_GET['gid']+0;//商品id 
$goods_statis_file = "goods_file_".$gid.".html";//对应静态页文件 
$expr = 3600*24*10;//静态文件有效期,十天 
if(file_exists($goods_statis_file)){ 
 $file_ctime =filectime($goods_statis_file);//文件创建时间 
 if($file_ctime+$expr-->time()){//如果没过期 
  echo file_get_contents($goods_statis_file);//输出静态文件内容 
  exit; 
 }else{//如果已过期 
  unlink($goods_statis_file);//删除过期的静态页文件 
  ob_start(); 

  //从数据库读取数据,并赋值给相关变量 

  //include ("xxx.html");//加载对应的商品详情页模板 

  $content = ob_get_contents();//把详情页内容赋值给$content变量 
  file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 
  ob_end_flush();//输出商品详情页信息 
 } 
}else{ 
ob_start(); 

 //从数据库读取数据,并赋值给相关变量 

//include ("xxx.html");//加载对应的商品详情页模板 

 $content = ob_get_contents();//把详情页内容赋值给$content变量 
 file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 
 ob_end_flush();//输出商品详情页信息 

} 

?>

10.局部动态化案例实现

静态页面中想加载动态的内容就需要用到局部动态化,需要用到ajax技术。

举例说明:有很多页面都有这样的加载效果。开始加载一部分页面  当鼠标移到页面底部后 会继续ajax请求数据并填充到页面上

jquery中ajax请求方式

$.ajax({    url:'',   type:'get/post',   dataType:'json',   error:function(){            },   success:function(result){            },})

实现步骤:

步骤一:编写接口

步骤二:ajax请求接口数据 请求成功后,将数据拼成需要的格式动态塞到页面中

11.伪静态

1.定义:伪静态就是把动态的url地址转换为类似于静态的url地址   我们通过伪静态的url地址访问的页面 其实还是一个动态页面

2.设计成伪静态原因:

让百度谷歌等浏览器收录

3.实现方

1.nginx伪静态配置
打开nginx.conf配置文件,在server里面写需要的规则后重启即可 
location /{ 
   rewrite ^(.*)/equip(d+).html$ $1/index.php?m=content&c=index&a=lists&catid=$2 last; 
}

2.apache伪静态配置
找到apache安装目录下的httpd.conf allowOverride all
找到 #LoadModule rewrite_module modules/mod_rewrite.so 打开注释 查看rewrite_module模块是否载入