缓存
系统缓存
buffer 与 cache
buffer:缓冲,一般用于写操作,用于解决不同介质的速度不一致的缓冲。CPU会先把数据写到内存的磁盘缓冲区,然后就认为数据已经写入完成,然后内核会在后续的时间将数据写入磁盘,如果服务器突然断电会丢失内存中的部分数据。
cache:缓存,一般用于读操作,CPU读文件从内存读,如果内存没有就从硬盘读到内存再读到CPU,将需要频繁读取的数据放在离自己最近的缓存区域,下次即可快速读取。
cache 的保存位置
客户端:浏览器
内存:本地服务器、远程服务器
硬盘:本机硬盘、远程服务器硬盘
用户层缓存
DNS缓存
默认为60秒,即60秒之内再访问同一个域名就不再进行DNS解析
浏览器缓存过期机制
- 最后修改时间:服务端比较浏览器request中的最后修改时间和服务端文件的最后修改时间。如果相等,则返回304状态码,表示文件没有发生变化,浏览器可以使用本地缓存;如果不相等,则返回200,将新文件返回;
- Etag标记:服务端通过比较浏览器request中的Etag标记(服务器根据文件内容计算出的值)和当前文件Etag标记,来判断文件内容是否发生过变化;
- 过期时间(常用):以上两种方式都需要浏览器和服务端交互,缓存的过期时间可以在浏览器第一次请求资源时返回一个过期时间。浏览器的时间未必准确,还会加入一个最大生存周期。
CDN缓存
什么是CDN
内容分发网络(Content Delivery Network),将服务内容分发至全网加速节点,利用全球调度系统使用户能够就近获取,有效降低访问延迟,提升服务可用性。
CDN的优势:
- 节省带宽:降低源站的使用带宽,因为很多资源通过CDN直接返回用户了;
- 调度准确:解决了不同运营商之间的互联,可以让联通的网络访问联通,电信的网络访问电信;解决用户访问的地域问题,就近返回用户资源
- 性能优化:专门用于缓存,响应速度快
- 安全相关:抵御攻击(图片识别等)