博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php页面静态化技术;学习笔记
阅读量:5824 次
发布时间:2019-06-18

本文共 3238 字,大约阅读时间需要 10 分钟。

hot3.png

简介

PHP的静态化就是将一些不常更新的页面静态化,而非通过动态程序从数据库中取出输出到前台。通过此方法可加快页面响应速度和减轻服务器负载压力。

页面静态化操作,包括两种:一种是静态化,一种是伪静态化。静态化又包括:完全静态化和局部静态化。下面逐一进行介绍:

1、 完全静态化:

就是将整个页面进行静态化,可以使用php缓冲区函数,将缓冲区内容输入到静态文件中。并设置过期时间,若静态文件超出过期时间,则重新进行静态化。 

10) { //已过期,删除原有文件,并生成新的静态页 unlink($filePath); ob_start(); include ("./view2.html"); //加载信息页 $content = ob_get_contents(); file_put_contents($filePath, $content); //将缓冲区内容输出到静态页 ob_end_flush(); //刷出缓冲区内容并结束缓冲 } else { include($filePath); } } else { ob_start(); include ("./view2.html"); //加载信息页 $content = ob_get_contents(); file_put_contents($filePath, $content); //将缓冲区内容输出到静态页 ob_end_flush(); //刷出缓冲区内容并结束缓冲 }

 另一种方法如下:

这是需要替换的页面 

demo

%demo%

PHP页面的静态化很有必要,尤其是在CMS系统中,一些内容一旦生成,基本上不会有变化,这时如果用html将页面静态化,无疑会减少服务其解析PHP页面的负担。以下是看书学来的PHP静态化技术,记录之以备不时之需。

无论是利用框架还是简单的脚本,原理基本一致:就是利用PHP进行文件操作,替换html模板中的动态元素,不仅能提高用户的访问速度还能让php与html分离,使代码更具有维护性。

 

用到的文件操作函数:

fopen()          --------------------       打开一个文件  函数有两个参数: 1.打开文件的路径和文件名  2.打开文件所用的模式(字符串形式)   这里用到了r 和 w r代表只读 w代表只写

feof()             --------------------       读取文件直到文件末尾    这个函数会在读取到文件的末尾返回true  那么就可以用while知道何时读完文件;函数有一个参数,1.打开的文件指针

fwiter()         --------------------         写入文件内容,函数有三个参数:1.写入的文件名称  2.写入的内容  3.(可选) 写入的最大字符数 

fclose()   ------------------------  关闭文件;一般做完所有操作后必须关闭文件;

注意事项: 需要注意文件的路径;以及读取文件所需要的权限  ;

生成文件名称及路径 *html=>需要读取的静态资源 *stsyem=>要替换的标签 *content=>标签替换的内容 * */ $cfill = fopen($r["html"],"r");//读取的文件名 $cfillnew = fopen($r["route"],"w"); while(!feof($cfill)){ $row = fgets($cfill); $res = str_replace($r["stsyem"],$r["content"],$row); //替换内容          fwrite($cfillnew,$res);//写入html文件 } /*关闭文件*/ fclose($cfill); fclose($cfillnew); } } $f = new textHtml; $fillname = microtime().".html"; $content = "这是一个页面静态化技术"; $r["route"] = $fillname; $r["html"] = "index.html"; $r["stsyem"] = "%demo%"; $r["content"] = $content; $f->fwriteHtml($r);

局部静态化

在完全静态化的基础上,通过ajax处理局部页面。譬如:新闻页如何实现点击量的更新问题?

答:页面的点击量可通过ajax实现,若ajax请求成功,会使当前redis总数量+1,请求成功后会通过jquery,将该静态页面的数量信息进行更新。然后,通过crontab定时任务,定期将redis的数据更新到数据库中。

 

伪静态

指在访问某个页面时时候,若该页面可以正常访问,则通过URL Rewrite的方式进行显示。

譬如:如下通过开启apache的rewrite模块实现。

在httpd.conf中去掉 LoadModule rewrite_module modules/mod_rewrite.so前的”#”。在虚拟站点中配置rewrite规则:

DocumentRoot /var/www/project ServerName static.lukexp.com
Options FollowSymLinks AllowOverride None Order Deny,Allow Allow from all
RewriteEngine on RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d RewriteRule ^/(\w+)/(\d+).htm$ /index.php?act=$1&id=$2

意思是将act=play&id=2的页面改为index.php/play/2.html

 

静态化的触发方式

静态化有多种触发方式。

    根据过期时间,生成新的静态化页面

    若文章信息发生编辑,则重新生成静态页面

    也可以通过一键更新(类似dedecms方式),其实就是一个php脚本根据数据库信息不断生成新的静态页。

    还可以定时任务进行更新,使用window的计划任务或者Linux的cronjob,定期更新静态页。

 

转载于:https://my.oschina.net/u/2364788/blog/2877103

你可能感兴趣的文章
新开的博客,为自己祝贺一下
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
C语言数据类型char
查看>>
Online Patching--EBS R12.2最大的改进
查看>>
Binary Search Tree Iterator leetcode
查看>>
uva-317-找规律
查看>>
Event事件的兼容性(转)
查看>>
我的2014-相对奢侈的生活
查看>>
zoj 2412 dfs 求连通分量的个数
查看>>
Java设计模式
查看>>
一文读懂 AOP | 你想要的最全面 AOP 方法探讨
查看>>
Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
查看>>
ORM数据库框架 SQLite 常用数据库框架比较 MD
查看>>
华为OJ 名字美丽度
查看>>
微信公众号与APP微信第三方登录账号打通
查看>>
onchange()事件的应用
查看>>