要想提升网站的性能,提高访问速度,使用缓存是一个很好的解决方案。
缓存的作用:
1.缩短网络路径,加快访问速度。
2.减少请求,降低服务器压力。
缓存分类:客户端缓存、CDN缓存、反向代理缓存、服务器本地缓存、服务器分布式缓存。
客户端缓存:
浏览器第一次请求服务器时,浏览器中没有缓存数据,直接向服务器请求获取数据,获取到数据后将数据缓存下来。
当浏览器再次向服务器发送同一请求时,浏览器会自动检测缓存中有没有对应数据,如果有,则查看是否过期,过期则根据相关策略再次从服务器上获取新的数据,并将新的数据缓存到浏览器中。如果缓存中的数据没有过期,则直接将缓存中的数据呈现到页面上。
浏览器能够在本地保存网站中的图片或者其他文件的副本,这样用户再次访问该网站的时候,浏览器就不用再下载全部的文件,减少了下载量意味着提高了页面加载的速度。
客户端缓存只影响当前用户。
CDN缓存:
没有使用CND缓存时,用户在浏览器中输入域名,本地DNS服务器会对域名进行解析并返回域名对应的IP地址,浏览器获取到IP地址后访问该IP,服务器对请求作出相应并返回数据,浏览器将数据渲染到页面上。
没有使用CDN缓存时,客户端和服务器的交互模型:
使用CND缓存时,用户在浏览器中输入域名,智能DNS解析(根据IP判断地理位置、接入网类型、选择路由最短和负载最轻的服务器),取得缓存服务器IP,根据IP发出访问请求,如果缓存服务器中有相关内容,则直接把数据返回给客户端,如果没有,则向源站发送请求,将数据返回给用户,同时将结果数据存入缓存服务器。
使用CDN缓存后,客户端浏览器先检查是否有本地缓存是否过期,如果过期,则向CDN边缘节点发起请求,CDN边缘节点会检测用户请求数据的缓存是否过期,如果没有过期,则直接响应用户请求,此时一个完成http请求结束;如果数据已经过期,那么CDN还需要向源站发出回源请求(back to the source request),来拉取最新的数据。
客户端和服务器的交互模型:
CDN的典型拓扑图如下:
CDN缓存适合更新很少的静态文件。站点或者应用中大量静态资源的加速分发,例如:css、js、图片、大文件、HTML等。可以设置哪些文件使用CDN进行缓存。
CDN缓存影响一批用户。
反向代理缓存:
反向代理缓存影响所有访问用户。
服务器本地缓存:
利用程序将数据缓存在服务器的内容中。
详细使用参见文章:https://blog.csdn.net/liangmengbk/article/details/118464951
服务器分布式缓存:
常用的有redis、memcached等。
关于redis系列文章:
Redis之list数据类型