纯静态网页:
纯静态的网页一般以.html或者htm结尾,地址对应的是一个文件,这个文件实实在在的存在于网站服务器的某个目录中。
纯静态网页优势:
1.当访问者访问网页的时候,不读取数据库,直接访问网站空间对应的文件。(直接读取文件)
2.纯静态的网页对搜索引擎友好,是最容易被搜索引擎所收录的。(易收录)
3.由于访问网页的时候,不需要服务器做过多的处理,对服务器的压力最小,所以,更容易应对高访问量。(节省服务器压力)
4.一些面对数据库的攻击比如SQL注入攻击,在面对静态网页的时候常常难以从地址入手。(安全性高)
纯静态网页劣势:
1.由于静态网页需要生成文件,所以当网站内容更新频率高,更新数据量大的时候,对服务器磁盘的写入也会很频繁;(服务器的负担)
2.在不采用其他技术的时候,如果更改了模板,所有相关的html网页都要重新生成,这在面对大数据量的时候,也不是一件很好玩的事。(模板修改、对应变化)
动态网页:
访问网页的时候,需要服务器读取数据库,数据库做出相应的处理,把数据返回给服务器,再由服务器发送给浏览器,这样的一个过程,需要消耗一定的服务器资源,在访问量大的时候,会加重服务器的负担。在过去搜索引擎技术不发达的时候,动态的网页一般都不太好收录,随着搜索引擎技术的提高,现在的动态页已经难不倒蜘蛛了,但是和纯静态的网页比起来,还是不如静态的网页容易被收录。
动态页优势:
1.动态页由于不用生成html文件,所以可以节省服务器空间,这样我们可以把更多的资金放在数据库上,节省出来的服务器空间可以用来放更多的图片附件等文件;(节省服务器空间)
动态页劣势:
1.不如静态的网页容易被收录(收录难)
2.一些面对数据库的攻击比如SQL注入攻击,在面对动态网页的时候常常容易从地址入手(安全性低)
网站静态化处理;
web前端优化技术和网站静态化技术使用目的是一致的,就是让网站变得更快,用户体验更好,我个人认为网站静态化技术其实就是web前端优化的一部分,只不过网站静态化技术是通过服务端的大规模技术改造来实现web前端技术优化,而服务端的这种改造的目的就是让整个网站的后台技术架构更加切合web前端的要求,从而能更好的实现web前端优化。我这里之所以能如此评价网站静态化技术,其实说明网站静态化技术和web前端优化技术一定存在某种强烈的切合点,我个人认为这个切合点就是它们背后使用的理论基点是一致的。那么它们之间这个切合的理论基点到底是什么呢?
优秀的网站应该是用户体验好的网站,当人们使用这个网站感觉爽,好评不断,那么这个网站就是一个用户体验优秀的网站,但是用户体验好的网站就是网站布局精美,图片很炫,人性化设计到位这么简单吗?这些要素都是网站使用者的感受,但是对于网站设计和开发人员而言,再好的网站一定要解决一个根本问题,那就是网站加载的速度要快,如果网站加载速度不快,你就算把网站设计的再漂亮,估计也会搞的无人问津
网站页面静态化的实现方法;
将动态页面转化为实际存在的静态页面这种方法,由于静态页面的存在,少了动态解析过程,所以提高了页面的访问速度和稳定性,使得优化效果非常明显。所以这种方法被广泛采用。但是它的局限性同样存在。对于大型网站而言,这种方法将带来不可忽视的问题。由于生成的文件数量较多,存储需要考虑文件、文件夹的数量问题和磁盘空间容量的问题;
页面维护的复杂性和大工作量,及带来的页面维护及时性问题,需要一整套站点更新制度。
而URL Rewrite方式特点同样鲜明,由于是服务器内部解析的地址,所以内容是实时更新的,也不存在文件管理和硬件问题,维护比较方便。在服务器级URL Rewrite重写技术并不影响页面的执行速度。但是URL Rewrite的门槛比较高,国内虚拟主机大多不支持,而且虚拟主机是目录级的URL Rewrite,通过遍历目录读物URL转发规则的方式将大大降低页面的执行速度。
网站页面静态化分两种:一种是利用程序将动态页面抓取并保存为实际静态页面,页面实际存在于服务器的硬盘中;一种是通过web服务器的URL Rwrite方式,它是通过web服务器内部模块按照一定的规则将外部的URL请求转化为内部的文件地址也就是把外部请求的静态地址转化为实际的动态页面地址,而静态页面实际是不存在的。
第一种方式实现过程基本可以分解为
:1、通过mybatis框架或herbnate框架或原生的jdbc从数据库拿到数据,
2、通过set方法注入到封装了相应数据属性的对象data中,
3、使用quarz调度器框架设置定时任务,按照设定的时间生成对应data的json文件,
4、通过javascript方法读取生成后存放在服务器硬盘中的json文件里面的数据,
5、前端展示的实现是在模板页面中调用读取到对应json文件的.js文件中的function()将数据加载到模板页面中对应需要填充该数据的位置。
第二种方式的实现则是在前端提交请求后通过在struts或springMVC框架下配置或者直接调用原生的servlet的request方法将请求通过HTTP协议发送到服务器,服务器将请求转发获取对应的内容,然后将拿到内容的路径通过写方法设置规则来重写从而将拿到的内容在前端展示并改变其在前端页面的路径显示。
网站页面静态化方案;
1.采用Nginx+Cache+Java结构的虚拟机单机部署;
这种方式是最简单的静态化方案,只需在当前的架构上加一层Cache层就行了,网络结构和业务逻辑都不用变化,只需将系统做静态化改造就完成了。他的优缺点如下所示。
优点:
没有网络瓶颈,不需要改造网络;
机器增加,也没有网卡瓶颈;
机器数增多,故障风险减少。
缺点:
机器增加,缓存命中率下降;
缓存分散,失效难度增加;
Cache和JBoss都会争抢内存。
该方案虽然比较简单,但也能够解决热点商品的访问问题,例如做大促时,商品数比较少,在有限内存中仍然能够命中这些商品;另外针对一些恶意攻击也十分有效,这时的命中率能达到90%以上,但是对系统的整体性能没有很多提升。
2,采用Nginx+Cache+Java结构的实体机单机部署;
这种方案是在前面的基础上将虚拟机改成实体机,增大Cache的内存,并且采用了一致性Hash分组的方式来提升命中率,这里将Cache分成若干组,这样可以达到命中率和访问热点的平很。他的优点如下:
既没有网络瓶颈,也能使用大内存;
减少Varnish机器,提升命中率;
提升命中率,能减少Gzip压缩;
减少Cache失效的压力。
这是一个比较理想的方案,在正常请求下也能达到50%左右的命中率,对一些基数数据比较小的系统,命中率能达到80%左右,这样的命中率比较理想。