PHP实现页面静态化深入讲解 |
随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化 。 一般情况下会从以下方面来做优化 1、动态页面静态化 2、优化数据库 3、使用负载均衡 4、使用缓存 5、使用CDN加速 现在很多网站在建设的时候都要进行静态化的处理,为什么网站要进行静态化处理呢?我们都知道纯静态网站是所有的网页都是独立的一个html页面,当我们访问的时候不需要经过数据的处理直接就能读取到文件,访问速度就可想而知了,而其对于搜索引擎而言也是非常友好的一个方式 。 纯静态网站在网站中是怎么实现的? 纯静态的制作技术是需要先把网站的页面总结出来,分为多少个样式,然后把这些页面做成模板,生成的时候需要先读取源文件然后生成独立的以.html结尾的页面文件,所以说纯静态网站需要更大的空间,不过其实需要的空间也不会大多少的,尤其是对于中小型企业网站来说,从技术上来讲,大型网站想要全站实现纯静态化是比较困难的,生成的时间也太过于长了 。不过中小型网站还是做成纯静态的比较,这样做的优点是很多的 。 而动态网站又是怎么进行静态处理的? 页面静态化是指将动态页面变成html/htm静态页面 。动态页面一般由asp,php,jsp,.net等程序语言编写而成,非常便于管理 。但是访问网页时还需要程序先处理一遍,所以导致访问速度相对较慢 。而静态页面访问速度快,却又不便于管理 。那么动态页面静态化即可以将两种页面的好处集中到一起 。 静态处理后又给网站带来了哪些好处? 1、静态页面相对于动态页面更容易被搜索引擎收录 。 2、访问静态页面不需要经过程序处理,因此可以提高运行速度 。 3、减轻服务器负担 。 4、HTML页面不会受Asp相关漏洞的影响 。 静态处理后的网站相对没有静态化处理的网站来讲还比较有安全性,因为静态网站是不会是黑客攻击的首选对象,因为黑客在不知道你后台系统的情况下,黑 客从前台的静态页面很难进行攻击 。同时还具有一定的稳定性,比如数据库或者网站的程序出了问题,他不会干扰到静态处理后的页面,不会因为程序或数据影响而 打不开页面 。 搜索引擎蜘蛛程序更喜欢这样的网址,也可以减轻蜘蛛程序的工作负担,虽然有的人会认为现在搜索引擎完全有能力去抓取和识别动态的网址,在这里还是建议大家能做成静态的尽量做成静态网址 。 下面我们主要来讲一讲页面静态化这个概念,希望对你有所帮助! 什么是HTML静态化: 常说的页面静态化分为两种,一种是伪静态,即url 重写,一种是真静态化 。 HTML静态化的好处: 一、减轻服务器负担,浏览网页无需调用系统数据库 。 实现HTML静态化的策略与实例讲解: 方法1:利用PHP模板生成静态页面 PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化 。 方法2:使用PHP文件读写功能生成静态页面 $out1 = "<html><head><title>PHP网站静态化教程</title></head><body>欢迎访问脚本之家www.jb51.net,本文主要介绍PHP网站页面静态化的方法</body></html>"; $fp = fopen("leapsoulcn.html","w"); if(!$fp) { echo "System Error"; exit(); } else { fwrite($fp,$out1); fclose($fp); echo "Success"; } 方法3:使用PHP输出控制函数(Output Control)/ob缓存机制生成静态页面 输出控制函数(Output Control)也就是使用和控制缓存来生成静态HTML页面,也会使用到PHP文件读写函数 。 PHP生成静态页面实例代码 1 ob_start(); echo "<html>". "<head>". "<title>PHP网站静态化教程</title>". "</head>". "<body>欢迎访问脚本之家,本文主要介绍PHP网站页面静态化的方法</body>". "</html>"; $out1 = ob_get_contents(); ob_end_clean(); $fp = fopen("leapsoulcn.html","w"); if(!$fp) { echo "System Error"; exit(); } else { fwrite($fp,$out1); fclose($fp); echo "Success"; } PHP生成静态页面实例代码 2 $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();//输出商品详情页信息 } 我们知道使用PHP进行网站开发,一般执行结果直接输出到游览器,为了使用PHP生成静态页面,就需要使用输出控制函数控制缓存区,以便获取缓存区的内容,然后再输出到静态HTML页面文件中以实现网站静态化 。 PHP生成静态页面的思路为:首先开启缓存,然后输出了HTML内容(你也可以通过include将HTML内容以文件形式包含进来),之后获取缓存中的内容,清空缓存后通过PHP文件读写函数将缓存内容写入到静态HTML页面文件中 。 知识点: gid = $_GET['gid']+0;//商品id $goods_statis_content = "goods_content_".$gid;//对应键 $expr = 3600*24*10;//有效期,十天 $mem = new Memcache; $mem--->connect('memcache_host', 11211); $mem_goods_content = $mem->get($goods_statis_content); if($mem_goods_content){ echo $mem_goods_content; }else{ ob_start(); //从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板 $content = ob_get_contents();//把详情页内容赋值给$content变量 $mem->add($goods_statis_content,$content, false, $expr); ob_end_flush();//输出商品详情页信息 } memcached是键值一一对应,key默认最大不能超过128个字节,value默认大小是1M,因此1M大小满足大多数网页大小的存储 。 到此这篇关于PHP实现页面静态化深入讲解的文章就介绍到这了,更多相关PHP实现页面静态化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! |