网站静态化方案(一)静态化原理
时间:2016-10-26 15:52:04
作者:zhongxia
原文地址:https://github.com/zhongxia245/blog/issues/39
网站静态化,看产品或者网站的需求,不要为了静态化而静态化。
这里主要讲一些原理,没有具体的实例。
一、 为什么要静态化?
加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;
减轻服务器负担,浏览网页无需调用系统数据库;
网站更安全,HTML页面不会受php相关漏洞的影响; 观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。
当然有好处,也有不足?
信息不同步。只有重新生成HTML页面,才能保持信息同步。
服务器存储问题。数据一直增加,静态HTML页面会不断增加,会占用大量的磁盘。需要考虑这个问题
静态化算法的精密性。要良好的处理数据与网页模板,及各种文件链接路径的问题,这就要求我们在静态化的算法中考虑到方方面面。稍有细小疏忽,将导致生成的页面中存在这样或那样的错误链接,甚至存在死链。因此,我们必须恰到好处的解决这些问题。既不能增加算法的可能性,又要照顾到方方面面。做到这一点,的确不容易。
二、PHP静态化
参考文章:《分享常见的几种页面静态化的方法》
PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。
纯静态化:PHP生成HTML文件
伪静态化:把内容存放在nosql内存(memcached),然后访问页面的时候,直接从内存里面读取。
大型动态网站静态化
参考文章:《大型网站的静态化处理》
大型网站(高访问量,高并发量),如果是静态网站,可以通过扩展足够多的 web服务器,然后支持超大规模的并发访问。
如果是一个动态的网站,特别是使用到了数据库的网站是很难做到通过增加web服务器数量的方式来有效的增加网站并发访问能力的。比如淘宝,京东。
静态化方案:
大型静态网站之所以能够快速响应高并发,因为他们尽量把动态网站静态化。
js,css,img等资源,服务端合并在返回
CDN 内容分发网络技术【网络传输的效率跟距离长短有关系的原理,通过算法,计算最近的静态服务器节点】
web服务器动静结合。页面有一部分是一直不变的,比如 header, footer 部分。 那么这一部分是否可以放在缓存。web服务器 apache或ngnix, appache有一个模块叫做ESI,CSI。能够动静拼接。把静态的部分缓存在 web服务器上,然后和服务器返回的动态页面拼接在一起。
浏览器实现动静结合,前端MVC。