您的位置:首页 > 运维架构 > 网站架构

如何提高网站首页的访问性能

2017-12-08 09:41 477 查看

如何提高网站首页的访问性能

标签: 淘淘商城

对于电子商务网站来说,门户首页作为所有操作的入口,访问并发量是巨大的,那问题来了,如何提高网站首页的性能呢?答案是:静态化。

一、 现状

首先我们分析下需要优化的页面的整个执行逻辑路径。如下图所示:


说明:用户在浏览器发起请求之后,请求的执行路径是 Nginx –> Tomcat –> Controler –> Service – > (httpClient) –>后台系统查询数据

二、改进步骤一

由于首页内容不会频繁的变化,所以可以将Service的HttpClient请求后台数据的数据存储到缓存中,加快并发读的性能。那逻辑路径则演变成:



将查询将Http请求改成查询本地缓存数据,性能可提高90%。

三、改进步骤二

通过上面的缓存数据读取优化之后性能得到了质的提升,但是如果每次访问首页得到的缓存数据都是相同的,那每次返回给Tomcat解析的视图其实都是一模一样的,那是否可以将这边解析好的视图直接存储的缓存中,那就没有后端什么事了。如下图所示:



这样就变成:用户发送请求直接从Nginx请求一个静态页面,这样就能很大的提高首页的并发能力了。那网站首页的性能就能集中在Nginx上解决了,至于Nginx的性能优化,后续补上

四.最终的问题就变成了如何生成这个静态页面。

什么时候生成静态页

定时生成:通过定时任务的模式定时更新这个静态文件(Quarz + httpClient、Linux + wget的定时任务)

实时生成:修改首页涉及的页面内容之后,触发更新静态页面的功能

怎么生成静态页面,先看下目前整个首页的访问逻辑图如下:



原来的后台结构不变,只需要再增加一个应用去通过httpClient的doget方法去访问后将响应的数据返回回来写入到指定的文件中即可。

这样整个首页就完成了静态化的操作。

附:另外还有个小优化,查看京东首页的图片资源,均为相对路径,这个是为什么呢?分析有两个原因:

1、传输数据的大小

2、由于浏览器加载同一个域名的资源的的最大并发线程数有限制,如果所有资源都在一个域名下的话会验证的降低加载资源的效率。所以再首页中通过拼接域名的模式来加载资源,这样可以突破浏览器对同一个域名的加载限制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: