前端性能优化技术
要解决性能的问题,有很多种常用的方法,我在下面列举一下,我相信12306这个网站使用下面的这些技术会让其性能有质的飞跃。
一、前端负载均衡
通过DNS的负载均衡器(一般在路由器上根据路由的负载重定向)可以把用户的访问均匀地分散在多个Web服务器上。这样可以减少Web服务器的请求负载。因为http的请求都是短作业,所以,可以通过很简单的负载均衡器来完成这一功能。最好是有CDN网络让用户连接与其最近的服务器(CDN通常伴随着分布式存储)。(关于负载均衡更为详细的说明见“后端的负载均衡”)
二、减少前端链接数
我看了一下1230**,打开主页需要建60多个HTTP连接,车票预订页面则有70多个HTTP请求,现在的浏览器都是并发请求的。所以,只要有100万个用户,就会有6000万个链接,太多了。一个登录查询页面就好了。把js打成一个文件,把css也打成一个文件,把图标也打成一个文件,用css分块展示。把链接数减到最低。
三、减少网页大小增加带宽
这个世界不是哪个公司都敢做图片服务的,因为图片太耗带宽了。现在宽带时代很难有人能体会到当拨号时代做个图页都不敢用图片的情形(现在在手机端浏览也是这个情形)。我查看了一下12306首页的需要下载的总文件大小大约在900KB左右,如果你访问过了,浏览器会帮你缓存很多,只需下载10K左右的文件。但是我们可以想像一个极端一点的案例,1百万用户同时访问,且都是第一次访问,每人下载量需要1M,如果需要在120秒内返回,那么就需要,1M * 1M /120 * 8 = 66Gbps的带宽。很惊人吧。所以,我估计在当天,12306的阻塞基本上应该是网络带宽,所以,你可能看到的是没有响应。后面随着浏览器的缓存帮助12306减少很多带宽占用,于是负载一下就到了后端,后端的数据处理瓶颈一下就出来。于是你会看到很多http 500之类的错误。这说明服务器垮了。
四、前端页面静态化
静态化一些不觉变的页面和数据,并gzip一下。还有一个并态的方法是把这些静态页面放在/dev/shm下,这个目录就是内存,直接从内存中把文件读出来返回,这样可以减少昂贵的磁盘I/O。
五、优化查询
很多人查询都是在查一样的,完全可以用反向代理合并这些并发的相同的查询。这样的技术主要用查询结果缓存来实现,第一次查询走数据库获得数据,并把数据放到缓存,后面的查询统统直接访问高速缓存。为每个查询做Hash,使用NoSQL的技术可以完成这个优化。(这个技术也可以用做静态页面)
对于火车票量的查询,个人觉得不要显示数字,就显示一个“有”或“无”就好了,这样可以大大简化系统复杂度,并提升性能。
六、缓存的问题
缓存可以用来缓存动态页面,也可以用来缓存查询的数据。缓存通常有那么几个问题:
1)缓存的更新。也叫缓存和数据库的同步。有这么几种方法,一是缓存time out,让缓存失效,重查,二是,由后端通知更新,一量后端发生变化,通知前端更新。前者实现起来比较简单,但实时性不高,后者实现起来比较复杂 ,但实时性高。
2)缓存的换页。内存可能不够,所以,需要把一些不活跃的数据换出内存,这个和操作系统的内存换页和交换内存很相似。FIFO、LRU、LFU都是比较经典的换页算法。相关内容参看Wikipeida的缓存算法。
3)缓存的重建和持久化。缓存在内存,系统总要维护,所以,缓存就会丢失,如果缓存没了,就需要重建,如果数据量很大,缓存重建的过程会很慢,这会影响生产环境,所以,缓存的持久化也是需要考虑的。
诸多强大的NoSQL都很好支持了上述三大缓存的问题。
http://blog.csdn.net/lifuxiangcaohui/article/details/8051645
相关推荐
【Java+JSP+MySQL】12306购票系统是一个基于Web的票务预订平台,采用Java作为后端开发语言,JSP作为视图层技术,MySQL作为数据库存储数据。这个项目旨在模拟中国铁路客户服务中心12306网站的功能,让学生或开发者...
【描述】"Java—Demo仿12306窗口实现购买火车票<MySQL>"描述了一个基于Java的模拟购票系统,它可能包括用户登录、查询车次、选择座位、下单支付等核心功能。利用MySQL作为数据存储,处理火车班次、座位、订单等...
前端优化对于提升用户体验至关重要,特别是在12306这样的高并发场景下: - **静态资源优化**:通过CDN分发静态资源,如图片、样式表和JavaScript脚本,减少服务器负担。 - **页面加载优化**:采用懒加载技术,非必要...
12306火车票订票系统是中国铁路客户服务中心推出的在线购票平台,以其便捷高效的服务,成为广大旅客出行的重要工具。这个项目涉及到的技术和知识面广泛,涵盖了互联网应用开发、数据库管理、服务器架构等多个领域。...
在12306Bypass的上下文中,我们可能会关注如何模拟购票请求,理解系统的验证机制,以及如何优化购票流程。这可能涉及到网络编程、爬虫技术、自动化测试工具等知识。不过,值得注意的是,任何未经授权的绕过行为都...
同时,为了应对高并发访问,系统可能采用了负载均衡技术,通过分配服务器间的请求来优化响应速度和稳定性。 在用户体验方面,前端页面通常使用HTML、CSS和JavaScript进行开发,构建出友好、易用的界面。JavaScript...
仿12306汽车售票系统是一个模仿中国铁路12306官方购票平台的项目,旨在实现汽车票的在线预订、查询、支付等功能。这个系统可能包括前端用户界面、后端服务器处理逻辑以及配套的数据库设计。由于描述中提到"一些小的...
系统集成了后台管理和前台购票功能,满足了学生群体的特殊需求,如寒暑假半价优惠等。 **核心技术与框架** 1. **JAVAEE技术栈**:JAVAEE(Java Platform, Enterprise Edition)是用于构建企业级Web应用的标准平台,...
这个系统可能涵盖基本的购票、退票、查询和修改订单等功能,以模拟实际12306网站的操作流程。 在开发这样一个系统时,我们需要考虑以下几个关键知识点: 1. **数据库设计**:首先,我们需要设计一个数据库来存储...
开发微信小程序"仿智行火车票12306"旨在模仿12306官方铁路订票系统,为用户提供火车票查询和预订功能。这个项目包含了后端服务和数据库设计,通过Java的SSM(Spring、SpringMVC、MyBatis)框架和MySQL数据库实现,...
12306是中国铁路官方的在线购票平台,其背后的技术涉及到分布式系统、高并发处理、大数据分析等多个方面。在这样的讨论中,我们可能涉及以下几个关键知识点: 1. **分布式系统**:12306作为全国性的大型在线服务...
标题中的"12306.html"表明这是一个与12306网上售票系统相关的HTML文件,可能是项目的一部分,用于展示或实现购票界面。描述提到是利用Java和HTML语言完成的第一个项目,这揭示了开发环境和技术栈的选择。 12306是...
系统需要与12306官网进行集成,共享车票信息和处理购票请求。同时,系统还需要与电子支付平台进行对接,确保支付流程的安全性。 【优化与改进】 1. 性能优化:为了应对高并发场景,系统需要进行性能优化,包括...
- 客票系统和电子支付平台进行扩容以应对互联网售票增加的负荷,12306网站作为前端处理购票请求的入口,与业务处理平台、电子支付平台协同完成售票业务。 - 线下售票网点和设备进行适应性改造,支持电子客票服务,...
【12306购票选择上下铺技巧详解】 在12306中国铁路客户服务中心网站购票时,选择火车卧铺的上下铺位置一直是一项挑战。尤其是对于老年人、孕妇、带小孩的旅客而言,选择下铺更为重要。以下是一些关于如何在12306...
考虑到12306的特殊性,可能还需要考虑到高峰期的负载平衡和用户体验优化。 接下来,我们深入到JavaScript技术。JavaScript是一种广泛用于网页动态交互的编程语言,它可以增强网页的用户体验,实现如表单验证、页面...
12306余票查询是中国铁路客户服务...总结来说,12306余票查询是一个复杂而关键的系统,它融合了分布式计算、数据库管理、网络安全、算法优化和用户体验设计等多种IT技术,是现代信息技术在公共服务领域的一个典型应用。
【火车站售票系统界面】是一个基于Web的模拟12306官网购票的用户界面,它主要展示了在大二阶段开发者对于网页设计与编程基础的掌握情况。这个项目可能包含了前端界面设计、后端数据交互以及一定的用户体验考虑。下面...