高并发网站缓存

随着网站流量的不断上升,高并发必须网站发展的一个挑战,如何提升网站的高并发?缓存。合理的利用缓存,控制缓存的粒度,对缓存进行分级,通常是提升并发的途径。

我们来看一下一个用户访问的流程:
web access

在这个过程中存在缓存有:

  • Browser Caches(离client比较近)
  • Proxy Caches(网络代理,http代理,socks代理)
  • Gateway Caches(CDN代理, js,css,图片加版本号控制)
  • 服务器缓存(nginx)
  • 业务缓存或者称之数据缓存(redis,memcached)
  • 消息队列
  • 页面片段缓存(twig,smarty)

  1. 浏览器缓存
    通过浏览器对一个web请求的数据进行缓存,包括JS、CSS、图片、html片段等,缓存的时间可以通过设置header来设置。
    2.代理服务器缓存
    用户访问web请求有时会挂一些代理,这些代理服务会缓存一些数据,还有DNS缓存。
    3.CDN
    Content Delivery Network,即内容分发网络。把内容缓存到边缘服务器,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容。
  2. 服务器
    一般服务器都带有缓存的模块。将请求的数据缓存缓存到一个文件,在一段时间之内这些缓存的数据是不变的。
    5.数据缓存
    数据缓存也称之业务缓存,将业务数据缓存到内存中,提供这类缓存的工具有Redis,Memcached等
  3. 消息队列
    对读的数据一般很容易用上缓存,但是如果是写数据,缓存就很难用上了,这时就可考虑使用队列如kafka、activemq、rabbitmq、rocketmq等。
  4. 页面片段缓存
    通常是指应用程序级别的文件缓存,应用去控制缓存的设定。

缓存是提高并发有效的方法,在设计的时候就应该考虑缓存的设计,缓存设计越灵活,后期越容易扩展,越能提升应用的性能。

nginx开启gzip压缩
8种网站流量统计工具
ajax-loader