`
天梯梦
  • 浏览: 13630920 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

PHP如何实现HTML页面静态化

 
阅读更多

前言:

随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化。

一般情况下会从以下方面来做优化

  • 动态页面静态化
  • 优化数据库
  • 使用负载均衡
  • 使用缓存
  • 使用CDN加速

现在很多网站在建设的时候都要进行静态化的处理,为什么网站要进行静态化处理呢?我们都知道纯静态网站是所有的网页都是独立的一个html页面,当我们访问的时候不需要经过数据的处理直接就能读取到文件,访问速度就可想而知了,而其对于搜索引擎而言也是非常友好的一个方式。

纯静态网站在网站中是怎么实现的?

纯静态的制作技术是需要先把网站的页面总结出来,分为多少个样式,然后把这些页面做成模板,生成的时候需要先读取源文件然后生成独立的以.html结尾的页面文件,所以说纯静态网站需要更大的空间,不过其实需要的空间也不会大多少的,尤其是对于中小型企业网站来说,从技术上来讲,大型网站想要全站实现纯静态化是比较困难的,生成的时间也太过于长了。不过中小型网站还是做成纯静态的比较,这样做的优点是很多的。

而动态网站又是怎么进行静态处理的?


页面静态化是指将动态页面变成html/htm静态页面。动态页面一般由asp,php,jsp,.net等程序语言编写而成,非常便于管理。但是访问网页时还需要程序先处理一遍,所以导致访问速度相对较慢。而静态页面访问速度快,却又不便于管理。那么动态页面静态化即可以将两种页面的好处集中到一起。

静态处理后又给网站带来了哪些好处?

  • 静态页面相对于动态页面更容易被搜索引擎收录。
  • 访问静态页面不需要经过程序处理,因此可以提高运行速度。
  • 减轻服务器负担。
  • HTML页面不会受Asp相关漏洞的影响。

静态处理后的网站相对没有静态化处理的网站来讲还比较有安全性,因为静态网站是不会是黑客攻击的首选对象,因为黑客在不知道你后台系统的情况下,黑 客从前台的静态页面很难进行攻击。同时还具有一定的稳定性,比如数据库或者网站的程序出了问题,他不会干扰到静态处理后的页面,不会因为程序或数据影响而 打不开页面。

搜索引擎蜘蛛程序更喜欢这样的网址,也可以减轻蜘蛛程序的工作负担,虽然有的人会认为现在搜索引擎完全有能力去抓取和识别动态的网址,在这里还是建议大家能做成静态的尽量做成静态网址。

下面我们主要来讲一讲页面静态化这个概念,希望对你有所帮助!

什么是HTML静态化:

PHP如何实现HTML页面静态化

PHP如何实现HTML页面静态化

常说的页面静态化分为两种,一种是伪静态,即url 重写,一种是真静态化。

在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板、缓存等实现页面静态化。

PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。

PHP伪静态:利用Apache mod_rewrite实现URL重写的方法。

HTML静态化的好处:

一、减轻服务器负担,浏览网页无需调用系统数据库。

二、有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;

三、加快页面打开速度,静态页面无需连接数据库打开速度较动态页面有明显提高;

四、网站更安全,HTML页面不会受php程序相关漏洞的影响;观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。数据库出错时,不影响网站正常访问。

五、数据库出错时,不影响网站的正常访问。

最主要是可以增加访问速度,减轻服务器负担,当数据量有几万,几十万或是更多的时候你知道哪个更快了. 而且还容易被搜索引擎找到。生成html文章虽操作上麻烦些,程序上繁杂些,但为了更利于搜索,为了速度更快些,更安全,这些牺牲还是值得的。

实现HTML静态化的策略与实例讲解:

 

基本方式

  • file_put_contents()函数 
  • 使用php内置缓存机制实现页面静态化 —output-bufferring.
PHP如何实现HTML页面静态化

PHP如何实现HTML页面静态化

  • 方法1:利用PHP模板生成静态页面

PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化。

在使用Smarty的情况下,也可以实现页面静态化。下面先简单说一下使用Smarty时通常动态读取的做法。

 

一般分这几步:

1、通过URL传递一个参数(ID);

2、然后根据此ID查询数据库;

3、取得数据后根据需要修改显示内容;

4、assign需要显示的数据;

5、display模板文件。

Smarty静态化过程只需要在上述过程中添加两个步骤。

第一:在1之前使用 ob_start() 打开缓冲区。

第二:在5之后使用 ob_get_contents() 获取内存未输出内容,然后使用fwrite()将内容写入目标html文件。

 

根据上述描述,此过程是在网站前台实现的,而内容管理(添加、修改、删除)通常是在后台进行,为了能有效利用上述过程,可以使用一点小手段,那就是Header()。具体过程是这样的:在添加、修改程序完成之后,使用Header() 跳到前台读取,这样可以实现页面HTML化,然后在生成html后再跳回后台管理侧,而这两个跳转过程是不可见的。

 

  • 方法2:使用PHP文件读写功能生成静态页面

<?
$out1 = "<html><head><title>PHP网站静态化教程</title></head><body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍PHP网站页面静态化的方法</body></html>";
$fp = fopen("leapsoulcn.html","w");
if(!$fp)
{
echo "System Error";
exit();
}
else
{
fwrite($fp,$out1);
fclose($fp);
echo "Success";
}
?>

 

  • 方法三:使用PHP输出控制函数(Output Control)/ob缓存机制生成静态页面

输出控制函数(Output Control)也就是使用和控制缓存来生成静态HTML页面,也会使用到PHP文件读写函数。

 

比如某个商品的动态详情页地址是: http://xxx.com?goods.php?gid=112
那么这里我们根据这个地址读取一次这个详情页的内容,然后保存为静态页,下次有人访问这个商品详情页动态地址时,我们可以直接把已生成好的对应静态内容文件输出出来。
 
  • PHP生成静态页面实例代码 1
<?
ob_start();
echo "<html>".
"<head>".
"<title>PHP网站静态化教程</title>".
"</head>".
"<body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍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

 

<?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();//输出商品详情页信息
 
}
 
?>

 

PHP生成静态页面的思路为:首先开启缓存,然后输出了HTML内容(你也可以通过include将HTML内容以文件形式包含进来),之后获取缓存中的内容,清空缓存后通过PHP文件读写函数将缓存内容写入到静态HTML页面文件中。

获得输出的缓存内容以生成静态HTML页面的过程需要使用三个函数:ob_start()、ob_get_contents()、ob_end_clean()。

 

知识点

1、ob_start函数一般主要是用来开启缓存,注意使用ob_start之前不能有任何输出,如空格、字符等。

2、ob_get_contents函数主要用来获取缓存中的内容以字符串形式返回,注意此函数必须在ob_end_clean函数之前调用,否则获取不到缓存内容。

3、ob_end_clean函数主要是清空缓存中的内容并关闭缓存,成功则返回True,失败则返回False

 

方法四:使用nosql从内存中读取内容(其实这个已经不算静态化了而是缓存);

以memcache为例:

 

 

<?php
$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大小满足大多数网页大小的存储。

 

原文:http://ismartstudio.com/php-how-to-implement-static-html-pages.html

转自:PHP如何实现HTML页面静态化

 

 

 

 

 

 

分享到:
评论

相关推荐

    PHP实现HTML页面静态化的方法

    主要介绍了PHP实现HTML页面静态化的方法,分享了静态处理的方法,静态处理后的优势,并提供了多种静态的方法,感兴趣的小伙伴们可以参考一下

    PHP缓存与静态化——PHP缓存与静态化

    在实际的应用中,用户使用浏览器浏览Web应用,都是在向Web服务器发送请求。Web服务器根据用户的请求使用以不同方式进行响应。通常对于动态网站而言,用户...这样,用户在访问时就直接访问静态HTML网页,不执行PHP脚本。

    使用PHP实现生成HTML静态页面

    在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板、缓存等实现页面静态化,今天就以PHP实例教程形式讨论PHP生成静态页面的方法。

    把php生成静态(html)页面程序类

    把php生成静态(html)页面程序类 private $template; //模版 private $file_name; //文件名 private $array; //数据数组 function __construct($file_name, $template, $array) { //构造类 $this-&gt;...

    PHP动态网页实现静态HTML技术的方法实现

    PHP动态网页实现静态HTML技术的方法实现

    PHP初期HTML静态网页

    PHP初期HTML静态网页 泡泡卡丁车的官网静态HTML 代码!!!!!!

    动态网页静态化 v11.0.zip

    动态网页静态化软件是一款动态转换静态网页定时HTML生成器,可定时把需要的ASP、.NET、PHP等动态网页自动生成HTML页面。 动态网页静态化软件功能: 可以生成任何网页! 优化软件核心文件,排除软件假死现象! 可以...

    html静态页面调用php文件的方法

    主要介绍了html静态页面调用php文件的方法,在进行应用程序开发过程中非常具有实用价值,需要的朋友可以参考下

    html静态页实现微信分享显示标题、摘要图片等信息,php版本的demo

    php程序实现在静态页分享内容到朋友圈,显示标题、摘要图片等信息。

    PHP超全网页在线qq音乐html静态页面

    PHP超全网页在线qq音乐html静态页面

    PHP生成静态页面小程序 v1.1.zip

    1,前台模板更改美化 2,前台文章分页进行静态化 3,后台新闻列表进行分页显示 4,后台批量更新进行分段更新 5,新加读取次数的字段,并在静态html页面进行动态调用 6,加一个PHP文章缓存功能,理解与静态HTML有什么...

    把php生成静态(html)页面程序类.zip

    生成静态页面一般是把动态页面生成html页面,这样可以减少服务器负载也是现在各大网站常用的优化方法,下面来分享一个把php生成静态(html)页面类.

    html静态网页综合(多例子绝对好)

    html静态网页综合(多例子绝对好) html静态网页综合(多例子绝对好) html静态网页综合(多例子绝对好)

    php_gjseo根据关键字上网搜索含关键字的网站并生成静态页html.页面静态化

    php_seo根据关键字上网搜索含关键字的网站并生成静态html页.zip

    织梦TAG静态化.rar

    织梦TAG静态化,生成静态网页,1、TAG这个目录可以改,修改arc.taghtml.class.php的146行和extend.func.php的15行,里面的tag/字样 2、文件名里的id号不能去掉,举例说因为“作业”和“昨夜”的拼音都一样,如果没有...

    分享常见的几种页面静态化的方法

    为什么要让网页静态化 一、加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高; 二、有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全; 三、减轻...

    Thinkphp实现站点静态化的方法详解

    thinkphp提供了一个有效...那么保存的路径就是项目路径/Html/a/index.html(默认的静态路径在项目路径的Html文件夹下,没有可以自己创建) 参数二:静态路径,上面已经说明了默认的路径,3.0中可以在入口文件里加入参数来

    使用ob系列函数实现PHP网站页面静态化

    利用PHP输出buffer直接写成html,定时后台定时扫一遍网站,是比较容易实现的网页静态化。 静态化之前: &lt;?php for($i=0;$i&lt;1000&gt;"; } ?&gt; 静态化: &lt;?php ob_start(); for($i=0;$i&lt;1000&gt;"; } $str = ob_...

    php生成静态html的企业网站管理系统 整站源码 我见过最好用的!

     企业网站管理系统借鉴了Discuz的模板技术,实现了MVC模式,模板全面标签化,只需懂得简单的html语言就能打造一个漂亮的网站;    二、无限极分类,自由选取模块。  实现递归无限级分类,每个分类可自定义模块,...

Global site tag (gtag.js) - Google Analytics