copyright zvvq
本教程操作环境:windows7系统、PHP8版、DELL G3电脑
copyright zvvq
什么是PHP静态化
PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。
纯静态化:是把PHP生成的动态页面保存成静态的html文件,用户访问该静态页面,而不是用户每一次访问都重新生成一张相同的网页
本文来自zvvq
优点就是减小服务器开销, 内容来自zvvq
如果细分纯静态,那么可以分为“局部纯静态”、“全部纯静态”: zvvq.cn
局部静态化:是生成的静态文件中,有局部的数据还是通过ajax技术动态获取的; 内容来自zvvq,别采集哟
完全静态化:即不存在动态获取数据的情况,所以内容都来自静态的html页面 内容来自zvvq
伪静态化:是指将动态页面的url地址转换成类似于静态页面的url地址的过程 zvvq.cn
伪静态化其实还是动态访问,其实质是动态生成数据,你访问的网址类似于"http://yourhost,com/index/post/12",是一个静态地址,该地址多见于博客地址,但伪静态化中,你访问的网址实际上经过服务器解析,还是会解析成类似于"http://yourhost,com/?c=index&a=post&id=12"的地址,所以称之为伪静态化 内容来自samhan666
伪静态的优点:美观;便于搜索引擎收录 zvvq.cn
PHP伪静态:利用Apache mod_rewrite实现URL重写的方法。
为什么要让网页静态化 zvvq
一、加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
zvvq
二、有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全; 本文来自zvvq
三、减轻服务器负担,浏览网页无需调用系统数据库; zvvq
四、网站更安全,HTML页面不会受php相关漏洞的影响; 观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。
本文来自zvvq
数据库出错时,不影响网站正常访问。
zvvq
生成html文章虽操作上麻烦些,程序上繁杂些,但为了更利于搜索,为了速度更快些,更安全,这些牺牲还是值得的。
PHP生成静态HTML页面的方法 zvvq好,好zvvq
利用PHP模板生成静态页面 zvvq好,好zvvq
PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化,也可以自己写一套模板解析规则,常见的可以模仿各类cms的模板规则。
1、使用PHP文件读写功能与ob缓存机制生成静态页面
内容来自zvvq,别采集哟
比如某个商品的动态详情页地址是: http://xxx.com?goods.php?gid=112
那么这里我们根据这个地址读取一次这个详情页的内容,然后保存为静态页,下次有人访问这个商品详情页动态地址时,我们可以
直接把已生成好的对应静态内容文件输出出来。
zvvq.cn
1 内容来自samhan666
2
3
本文来自zvvq
4
5 zvvq.cn
6 copyright zvvq
7 zvvq好,好zvvq
8 zvvq
9 内容来自zvvq,别采集哟
10 本文来自zvvq
11
12
本文来自zvvq
13 zvvq.cn
14 zvvq好,好zvvq
15
内容来自zvvq
16 copyright zvvq
17
copyright zvvq
18
19
本文来自zvvq
20 内容来自zvvq,别采集哟
21
22
内容来自samhan
23 内容来自samhan
24 内容来自zvvq
25
26 内容来自zvvq,别采集哟
27
28 zvvq
29 内容来自samhan666
30 copyright zvvq
31
32
本文来自zvvq
33
34
本文来自zvvq
35 zvvq.cn
<?php
$gid = $_GET [ &39;gid&39; ]+0; //商品id 内容来自samhan666
$goods_statis_file = "goods_file_" . $gid . ".html" ; //对应静态页文件 本文来自zvvq
$expr = 36002410; //静态文件有效期,十天 copyright zvvq
if ( file_exists ( $goods_statis_file )){
$file_ctime = filectime ( $goods_statis_file ); //文件创建时间 zvvq
if ( $file_ctime + $expr -->time()){ //如果没过期
echo file_get_contents ( $goods_statis_file ); //输出静态文件内容 copyright zvvq
exit ; 内容来自zvvq,别采集哟
} else { //如果已过期 本文来自zvvq
unlink( $goods_statis_file ); //删除过期的静态页文件
zvvq.cn
ob_start();
zvvq
//从数据库读取数据,并赋值给相关变量 zvvq好,好zvvq
//include ("xxx.html");//加载对应的商品详情页模板
$content = ob_get_contents(); //把详情页内容赋值给$content变量 zvvq.cn
file_put_contents ( $goods_statis_file , $content ); //写入内容到对应静态文件中 内容来自samhan666
ob_end_flush(); //输出商品详情页信息
} 内容来自zvvq
} else { 内容来自zvvq
ob_start();
zvvq
//从数据库读取数据,并赋值给相关变量
//include ("xxx.html");//加载对应的商品详情页模板
$content = ob_get_contents(); //把详情页内容赋值给$content变量
file_put_contents ( $goods_statis_file , $content ); //写入内容到对应静态文件中 内容来自zvvq,别采集哟
ob_end_flush(); //输出商品详情页信息
} 内容来自zvvq
?>
内容来自samhan
2、使用nosql从内存中读取内容(其实这个已经不算静态化了而是缓存); zvvq.cn
以memcache为例: 内容来自samhan666
1
内容来自samhan666
2 内容来自samhan
3 内容来自samhan666
4
内容来自zvvq,别采集哟
5
6
zvvq好,好zvvq
7 内容来自samhan666
8
内容来自samhan
9
本文来自zvvq
10 内容来自zvvq
11
12 内容来自samhan
13 zvvq
14 zvvq好,好zvvq
15
16
zvvq
17
内容来自samhan
18 内容来自samhan
19
内容来自zvvq,别采集哟
20
21
zvvq.cn
22 copyright zvvq
23 内容来自samhan666
24 内容来自zvvq,别采集哟
25 zvvq
26
27 内容来自samhan666
28
<?php
$gid = $_GET [ &39;gid&39; ]+0; //商品id
$goods_statis_content = "goods_content_" . $gid ; //对应键 zvvq.cn
$expr = 36002410; //有效期,十天 本文来自zvvq
$mem = new Memcache; copyright zvvq
$mem --->connect( &39;memcache_host&39; , 11211);
zvvq.cn
$mem_goods_content = $mem ->get( $goods_statis_content ); 内容来自zvvq
if ( $mem_goods_content ){
本文来自zvvq
echo $mem_goods_content ;
} else { 内容来自samhan666
ob_start();
//从数据库读取数据,并赋值给相关变量
//include ("xxx.html");//加载对应的商品详情页模板
本文来自zvvq
$content = ob_get_contents(); //把详情页内容赋值给$content变量
内容来自zvvq,别采集哟
$mem ->add( $goods_statis_content , $content , false, $expr );
ob_end_flush(); //输出商品详情页信息 本文来自zvvq
} zvvq
?> zvvq.cn
memcached是键值一一对应,key默认最大不能超过128个字节,value默认大小是1M,因此1M大小满足大多数网页大小的存储。
推荐学习:《PHP视频教程》 内容来自samhan
以上就是php静态化是什么意思的详细内容,更多请关注其它相关文章!