SEO教程

大型网站访问速度如何优化?

来源:admin 2019-01-14 11:57:42438

  一般基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。而且这几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,今天,北京网站优化公司就从低成本、高性能和高扩张性的角度来说说我的一些经验,和大家一起分享下关于大型网站访问速度优化的几点思路与解决方案。


  大型网站访问速度如何优化?


  一、服务器集群


  对于小型的网站,通常就是一台Web服务器,支撑个几百上千的并发量倒也还没什么问题。但对于并发量几百万上千万甚至上亿的大型网站而言,如果还是这样处理,那服务器就可能瞬间崩溃。所以通常解决的思路是服务器集群来负载均衡的,即配置多台Web服务器,终端用户在通过浏览器访问的时候,会在请求服务器之前再加一层处理-通过Ngix的反向代理机制把请求均衡到各个Web服务器上,这样即可有效的减小服务器的负载。当高并发时还可以通过增加Web服务器的方法来解决。


  二、数据库集群读写分离


  由于Web服务器采用了负载均衡集群结构提高了服务的有效性和扩展性,因此数据库必须也是高可靠的才能保证整个服务体系的高可靠性。可以从以下几点入手:


  1、使用 MySQL 数据库,考虑到Web应用的数据库读多写少的特点,我们主要对读数据库做了优化,提供专用的读数据库和写数据库,在应用程序中实现读操作和写操作分别访问不同的数据库。


  2、使用 MySQL Replication 机制实现快速将主库(写库)的数据库复制到从库(读库)。一个主库对应多个从库,主库数据实时同步到从库。


  3、写数据库有多台,每台都可以提供多个应用共同使用,这样可以解决写库的性能瓶颈问题和单点故障问题。


  4、读数据库有多台,通过负载均衡设备实现负载均衡,从而达到读数据库的高性能、高可靠和高可扩展性。


  5、数据库服务器和应用服务器分离。


  6、从数据库使用BigIP做负载均衡。


  三、HTML静态化


  大家知道,页面静态化分类真静态和伪静态,当然我们这里所说的是真静态,即纯html静态页,该页面可以直接被各大浏览器所解析,无需请求后台服务器处理。是一种效率最高,消耗最小,同时也是一种最简单有效的方法。我们常见的一些CMS(信息发布系统),也大多都是采用此方法。对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。其实,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。


  四、图片服务器分离


  对于Web服务器来说,不管是Apache、Tomcat 、IIS还是其他服务器,图片是最消耗资源的,必须将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的 LoadModule,保证更高的系统消耗和执行效率。


  五、缓存的应用


  做技术开发的对缓存应该是最熟悉不过了,这东西用得恰当对网站的访问速度会有显著的提升。通常我们会把缓存分为:文件缓存,xcache缓存,memcache缓存,redis缓存,根据不同的应用场景,合理的使用缓存能减少数据库的查询,从而提高程序的运行速度。比如:从数据库只取国家列表,地区列表的数据可以把它查出来放到memcache缓存或者redis缓存中,因为这种数据一般更新比较小,可以减少Mysql的查询。再比方说一些需要复杂处理的结构性数据用于页面的渲染,也可把它放到缓存中,用的时候直接从缓存中取出,在页面中展示,将省去数据的查询与组装这两步。从而提高进行效率。


  以上5点只是北京网站优化公司一些优化思路,大型网站的架构设计远远不止这些,它还包括前端页面的架构设计以及CDN加速,服务器的配置等等。作为一名网站开发者,作为一名程序员,最终最直接该面对的还是代码,所以如何写高质量的代码,使每一个功能的运行都可以非常流畅,很多时候不是以上5点可以包含到的,关键还在于编码上。当然这又是一个一言难尽的话题,我们又一回再详细来讨论这一话题。


文章推荐