Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【20161026】网站静态化方案(一)静态化原理 #39

Closed
zhongxia245 opened this issue Oct 26, 2016 · 0 comments
Closed

【20161026】网站静态化方案(一)静态化原理 #39

zhongxia245 opened this issue Oct 26, 2016 · 0 comments

Comments

@zhongxia245
Copy link
Owner

网站静态化方案(一)静态化原理

时间:2016-10-26 15:52:04
作者:zhongxia

网站静态化,看产品或者网站的需求,不要为了静态化而静态化。
这里主要讲一些原理,没有具体的实例。

一、 为什么要静态化?

  1. 加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
  2. 有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;
  3. 减轻服务器负担,浏览网页无需调用系统数据库;
  4. 网站更安全,HTML页面不会受php相关漏洞的影响; 观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。

当然有好处,也有不足?

  1. 信息不同步。只有重新生成HTML页面,才能保持信息同步。
  2. 服务器存储问题。数据一直增加,静态HTML页面会不断增加,会占用大量的磁盘。需要考虑这个问题
  3. 静态化算法的精密性。要良好的处理数据与网页模板,及各种文件链接路径的问题,这就要求我们在静态化的算法中考虑到方方面面。稍有细小疏忽,将导致生成的页面中存在这样或那样的错误链接,甚至存在死链。因此,我们必须恰到好处的解决这些问题。既不能增加算法的可能性,又要照顾到方方面面。做到这一点,的确不容易。

二、PHP静态化

参考文章:《分享常见的几种页面静态化的方法》

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

纯静态化:PHP生成HTML文件
伪静态化:把内容存放在nosql内存(memcached),然后访问页面的时候,直接从内存里面读取。

大型动态网站静态化

参考文章:《大型网站的静态化处理》

大型网站(高访问量,高并发量),如果是静态网站,可以通过扩展足够多的 web服务器,然后支持超大规模的并发访问。

如果是一个动态的网站,特别是使用到了数据库的网站是很难做到通过增加web服务器数量的方式来有效的增加网站并发访问能力的。比如淘宝,京东。

静态化方案:

大型静态网站之所以能够快速响应高并发,因为他们尽量把动态网站静态化。

  1. js,css,img等资源,服务端合并在返回
  2. CDN 内容分发网络技术【网络传输的效率跟距离长短有关系的原理,通过算法,计算最近的静态服务器节点】
  3. web服务器动静结合。页面有一部分是一直不变的,比如 header, footer 部分。 那么这一部分是否可以放在缓存。web服务器 apache或ngnix, appache有一个模块叫做ESI,CSI。能够动静拼接。把静态的部分缓存在 web服务器上,然后和服务器返回的动态页面拼接在一起。
  4. 浏览器实现动静结合,前端MVC。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant