您现在的位置是:网站首页 > 心得笔记
PHP页面静态化
1.为什么要静态化页面?
静态化页面是指将动态生成的网页在服务器端生成为静态的HTML文件,然后直接返回给用户访问,而不是在每次用户请求时都重新生成。这样做的好处主要有:
1.提高网站的响应速度和性能。由于不需要在每次用户请求时重新生成页面,因此可以极大地减少服务器的负担,提高网站的访问速度和性能。 2.提高用户体验。由于静态页面不需要再次进行数据处理和渲染,因此用户可以更快地获取到所需的内容,提高用户体验。 3.降低网站运维成本。静态页面不需要数据库和程序的支持,因此可以降低网站的运维成本和维护成本。
2.如何实现页面静态化?
主要思路是将动态页面生成为静态的 HTML 文件,然后保存到服务器上,下次用户访问时直接读取文件返回给用户
具体实现步骤
3.页面的分类
1.动态页面:当我们加载页面时 它会首先去执行动态文件中的动态程序,这些动态程序主要有jsp asp php等 动态文件执行阶段:语法分析-》编译-》运行 2.静态页面:其实就是一个全静态的html文件 这个文件里的程序都是以html的语言格式呈现的 静态文件执行阶段:直接运行
4.如何优化页面响应时间
1.动态页面静态化(这里主要讲解的是动态页面静态化) 2.优化数据库 3.优化接口 4.使用缓存
5.动态页面静态化
使用场景
如果页面中有一些内容不经常改动,动态页面静态化是非常有效的加速方法。比如新浪首页www.sina.com.cn 它实际执行的首页文件就是index.shtml
实质
生成静态的html文件
好处
减少服务器脚本的计算时间
降低服务器的响应时间
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模块是否载入