现在互联网发展越来越迅速,对网站的性能要求越来越高,也就是如何应对高并发量。像12306需要应付上亿人同时来抢票,淘宝双十一……所以,如何提高网站的性能,是做网站都需要考虑的。
首先网站性能优化的方面有很多:1,使用缓存,最传统的一级二级缓存;2,将服务和数据库分开,使用不同的服务器,分工更加明确,效率更加高;3,分布式,提供多台服务器,利用反向代理服务器nginx进行反向代理,将请求分散开来;4,数据库的读写分离,不同的数据库,将读操作和写操作分开,并实时同步即可;5,分布式缓存,使用memcached或者redis等分布式缓存服务器,可以达到效果;6,就是今天要浅谈的页面静态化。当然还有其他很多方便需要处理,例如,数据库的设计,分库分字段,sql语句的优化等等。
今天简单来谈谈页面静态化,来提高访问效率。对于Java程序开发,Jsp页面经历了静态页面到动态页面,使页面丰富多彩,现在为了追求效率,追求性能,又反向动态页面向静态页面的转化。突然让我想起了一句话“物极必反,否极泰来”,天底下,任何人任何物,都没有绝对的对与错,好与差,只有在特定的环境的,特定的情节,才有可比较之处。这也正是我对软件IT技术,甚至更广方面技术的看法,没有好与差,没有优与劣,只有看我们是否能够将其用到恰当的地方,发挥它的优势,避免他的不足!所以,不要谈技术好与差,只有看我们人用的怎么样!
好了,废话不说,看看页面静态化如何提高效率和其实现的逻辑吧。
页面静态化,其实就是将动态生成的jsp页面,变成静态的HTML页面,让用户直接访问。有一下几方面好处:1,首先就是访问速度,不需要去访问数据库,或者缓存来获取哪些数据,浏览器直接加载渲染html页即可。所以可以大大的提高访问效率; 2,从网站优化来分析,搜索引擎更喜欢静态的网页,静态网页与动态网页相比,搜索引擎更喜欢静的,更便于抓取,搜索引擎SEO排名更容易提高。 3,从安全角度讲,静态网页不宜遭到黑客攻击,如果黑客不知道你网站的后台、网站采用程序、数据库的地址,静态网页, 更不容易受到黑客的攻击。 4,从网站稳定性来讲,如果程序、数据库出了问题,会直接影响网站的访问,而静态网页就避免了如此情况,不会因为程序等,而损失网站数据,影响正常打开,损失用户体验,影响网站信任度。
实现逻辑:一,首先需要我们将一些需要静态化的页面进行分类,哪些经常不变内容的页面都需要静态化,例如,在电商里边的商店,店铺信息页;商品,货物信息页等等。这些页面一旦发布了,后来改变的相对来说频率比较低,所以生成静态页面相对来说,可以大大提高用户的访问速度(不需要访问数据库,来动态生成jsp页面)。 二,将动态和静态分离开,例如:页面中用户信息,搜索栏等。这些信息需要从服务器获取,而那些静态页面一般放在云服务器上,例如上篇说到的阿里的OSS服务器,这里就设计到跨域问题,利用JSONP,来进行静态页面和动态页面,不同域直接的整合。 三,静态页面的生成,方法很多,这里简单说一下,例如FreeMarker,首先利用FreeMarker写好对应的静态模版.ftl。然后通过接口来传递数据,生成静态的HTML页面,并上传对应的云服务器上,然后用户直接访问对应的地址即可。
注意问题:一,每一个商店,每一个产品都会产生一个,甚至是一套静态页面,随着网站的扩大,静态html页面将会不断的增大,增多,所以管理这些静态页面就非常需要提前思考了。例如路径的管理,控件的管理,及时更新的管理等等。 二,有些页面并不一定非要来静态化,但是为了避免地址暴露过多的信息,受到不法分子的攻击,URL伪静态也可以帮助我们,使页面看起来就像静态页面一样,这里提供一个URLRwrite,很简单好用,原理只是一个Filter。
好,这篇博客只是简单总结了一下自己的思路,网站的优化都是一步步走向更好的,静态化只是其中的一个环节,但是能够做好,需要考虑的东西还很多,以后多多思考多多学习!