动态页面静态化

23 篇文章 0 订阅

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

动态页面静态化
优化数据库
使用负载均衡
使用缓存
使用CDN加速
现在很多网站在建设的时候都要进行静态化的处理,为什么网站要进行静态化处理呢?我们都知道纯静态网站是所有的网页都是独立的一个html页面,当我们访问的时候不需要经过数据的处理直接就能读取到文件,访问速度就可想而知了,而其对于搜索引擎而言也是非常友好的一个方式。
纯静态网站在网站中是怎么实现的?
纯静态的制作技术是需要先把网站的页面总结出来,分为多少个样式,然后把这些页面做成模板,生成的时候需要先读取源文件然后生成独立的以.html结尾的页面文件,所以说纯静态网站需要更大的空间,不过其实需要的空间也不会大多少的,尤其是对于中小型企业网站来说,从技术上来讲,大型网站想要全站实现纯静态化是比较困难的,生成的时间也太过于长了。不过中小型网站还是做成纯静态的比较,这样做的优点是很多的。

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

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

静态页面相对于动态页面更容易被搜索引擎收录。
访问静态页面不需要经过程序处理,因此可以提高运行速度。
减轻服务器负担。
HTML页面不会受Asp相关漏洞的影响。
静态处理后的网站相对没有静态化处理的网站来讲还比较有安全性,因为静态网站是不会是黑客攻击的首选对象,因为黑客在不知道你后台系统的情况下,黑 客从前台的静态页面很难进行攻击。同时还具有一定的稳定性,比如数据库或者网站的程序出了问题,他不会干扰到静态处理后的页面,不会因为程序或数据影响而 打不开页面。

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

下面我们主要来讲一讲页面静态化这个概念,希望对你有所帮助!
什么是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.

方法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文件读写功能生成静态页面


[php] view plain copy
<?   
$out1 = "<html><head><title>PHP网站静态化教程</title></head><body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍PHP网站页面静态化的方法</body></html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在上一篇文章中,我们介绍了什么是URL重写和为什么要使用动态页面静态。本文将进一步探讨如何使用URL重写将动态页面转换为静态页面。 1. 确定需要静态页面 通常情况下,我们会选择那些频繁访问、数据不经常更新的页面进行静态,这样可以大幅度减少服务器压力,提高网站响应速度。 2. 编写URL重写规则 接下来,我们需要编写URL重写规则,将动态页面的URL转换为静态页面的URL。这里我们以Apache服务器为例,使用mod_rewrite模块来实现URL重写。 例如,我们要将动态页面http://www.example.com/article.php?id=1 转换为静态页面http://www.example.com/article/1.html,则可以使用以下规则: ``` RewriteEngine On RewriteRule ^article/([^/]*)\.html$ /article.php?id=$1 [L] ``` 这个规则的意思是:将以“/article/”开头、以“.html”结尾的URL请求重写为“/article.php?id=”后面接文章ID的形式。 3. 编写静态页面生成程序 重写URL只是第一步,我们还需要编写程序将动态页面生成为静态页面。这个程序可以是一个独立的脚本,也可以是在页面加载时自动执行的程序。 例如,我们可以在article.php页面中加入以下代码: ``` if(!file_exists("article/".$_GET['id'].".html")){ ob_start(); // 页面内容 $content = ob_get_contents(); ob_end_clean(); file_put_contents("article/".$_GET['id'].".html", $content); } ``` 这个程序的作用是:当访问article.php页面时,如果“/article/”后面的ID对应的静态文件不存在,则将页面内容缓存起来,并保存为“/article/”后面的ID对应的静态文件。 这样,当下一次访问同一页面时,服务器会直接返回静态页面,而不用再去执行动态页面生成的过程,从而提高网站响应速度。 4. 静态页面更新 由于静态页面不像动态页面那样能够自动更新,因此我们需要编写相应的程序来实现静态页面的更新。 例如,我们可以在article.php页面中添加以下代码: ``` if(file_exists("article/".$_GET['id'].".html")){ unlink("article/".$_GET['id'].".html"); } ``` 这个程序的作用是:当文章内容发生变时,删除对应的静态文件,下一次访问该页面时会重新生成静态文件。 总结: 通过URL重写和动态页面静态,可以大幅度提高网站的响应速度,减少服务器压力。但是需要注意的是,静态页面不适合频繁更新的内容,否则可能导致用户看到的内容与实际情况不符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值