通用PHP动态生成静态HTML网页的代码

 更新时间:2010年03月04日 18:50:41   作者:  
最近研究PHP的一些开发技术,发现PHP有很多ASP所没有的优秀功能,可以完成一些以前无法完成的功能,例如动态生成HTML静态页面,以减少服务器CPU的负载,提高用户访问的速度。
我们知道,PHP读取MYSQL动态显示,在访问量大的情况下,会有很多性能问题,如果租用别人的虚拟主机,则会因为CPU消耗过多而被限制CPU,导致网页无法访问。我这里给出一个PHP动态生成HTML的方法,可以极大降低服务器CPU负荷。

  首先设置.htaccess文件,将动态调用的参数转换为静态的HTML的URL地址,例如将在post目录下的文件,转发到根目录的wp-post.php文件中,加入的语句类似:

RewriteRule ^post/([a-z0-9\-]+\.html)$ wp-post.php?$1$2

  然后修改wp-post.php文件,在文件的开头加入以下PHP代码:
复制代码 代码如下:

ob_start();
$qstring = isset($_SERVER[%26quot;QUERY_STRING%26quot;]) ? $_SERVER[%26quot;QUERY_STRING%26quot;] : %26quot;%26quot;;
define(%26quot;HTML_FILE%26quot;, $_SERVER['DOCUMENT_ROOT'].%26quot;/post/%26quot;.$qstring);

if (file_exists(HTML_FILE))
{
$lcft = filemtime(HTML_FILE);
if (($lcft + 3600) %26gt; time()) //判断上次生成HTML文件是否超过1小时,若没有才直接输出文件内容
{
echo(file_get_contents(HTML_FILE));
exit(0);
}
}

  之后是现有的PHP的代码,然后在当前代码的最后面加上如下的PHP代码:
复制代码 代码如下:

define(%26quot;HTMLMETA%26quot;,%26quot;%26lt;!-- this is a real static html file created at %26quot;.date(%26quot;Y-m-d H:i:s%26quot;).%26quot; --%26gt;%26quot;);
$buffer = ob_get_flush();
$fp = fopen(HTML_FILE, %26quot;w%26quot;);
if ($fp)
{
fwrite($fp, $buffer.HTMLMETA);
fclose($fp);
}

  好了,然后查看你的静态HTML页面,如果页面尾部出现了注释行,说明已经成功的创建了静态HTML文件。

  这个方法的一个应用就是我先前写的那个%26ldquo;WordPress年度博客统计插件%26rdquo;,这个统计插件由于查询十多次数据库,很多人访问的时候会有很大性能问题,使用我介绍的这种动态生成HTML技术后,一天就查询一次,生成一次统计排行,完美解决了查询数据库的性能问题。

相关文章

  • PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法

    PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法

    这篇文章主要介绍了PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法,涉及php根据各个网站的网址规则针对URL地址的正则匹配与转换相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • php 向访客和爬虫显示不同的内容

    php 向访客和爬虫显示不同的内容

    为了提高网页的用户体验, 我们经常会做一些对搜索引擎不太友好的事情, 但某些情况下这并不是无法挽回的, 可以通过向自然人和搜索引擎机器人显示不同的内容来提供好的用户体验和 SEO.
    2009-11-11
  • PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】

    PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】

    这篇文章主要介绍了PHP7实现和CryptoJS的AES加密方式互通操作,结合实例形式分析了PHP AES-128-ECB加密算法相关使用技巧,需要的朋友可以参考下
    2019-06-06
  • PHP 和 MySQL 开发的 8 个技巧

    PHP 和 MySQL 开发的 8 个技巧

    PHP 和 MySQL 开发的 8 个技巧...
    2007-01-01
  • PHP入门教程之表单与验证实例详解

    PHP入门教程之表单与验证实例详解

    这篇文章主要介绍了PHP入门教程之表单与验证技巧,结合实例形式分析了php表单提交与数据验证的基本技巧与相关注意事项,需要的朋友可以参考下
    2016-09-09
  • PHP结构型模式之装饰器模式

    PHP结构型模式之装饰器模式

    这篇文章主要介绍了PHP结构型模式之装饰器模式,装饰器模式是一种结构型模式,它允许你在运行时为一个对象动态地添加新的行为,而不影响其原始的行为。这种类型的设计模式属于结构型模式,它结合了透明性和多样性
    2023-04-04
  • php中通过eval实现字符串格式的计算公式

    php中通过eval实现字符串格式的计算公式

    有时候我们对每一种产品都有一个提成公式,而这个计算提成的公式是以字符串格式存在表中的,当我们用这个计算公式时,他并不像我们写的:$a=2+3*5;这样简单的能计算出结果,而它是个字符串,所以,我们就必须把字符串转化为我们能够处理的结果
    2017-03-03
  • php使用PDO执行SQL语句的方法分析

    php使用PDO执行SQL语句的方法分析

    这篇文章主要介绍了php使用PDO执行SQL语句的方法,结合实例形式分析了PDO常用SQL函数功能及使用技巧,需要的朋友可以参考下
    2017-02-02
  • PHP源码之explode使用说明

    PHP源码之explode使用说明

    最近一直在想有关字符串操作的一些效率上的事情,截取字串的问题,都会避免不了重新分配空间的消耗,也顺带看了explode这个函数的源码,理解下,拿出自己的分析共享下
    2011-08-08
  • php中的字符编码转换函数用法示例

    php中的字符编码转换函数用法示例

    这篇文章主要介绍了php中的字符编码转换函数用法示例,非常具有实用价值,需要的朋友可以参考下
    2014-10-10

最新评论