CDN 介绍

发布时间: 更新时间: 总字数:1281 阅读时间:3m 作者: 分享 复制网址
专栏文章
  1. HTTP 专题
  2. HTTP 响应码
  3. HTTP API 设计格式
  4. HTTPS中的加密算法相关概念
  5. CDN 介绍(当前)
  6. GraphQL 介绍
  7. HTTP2介绍

CDN(Content Delivery Network内容分发网络)是将源站内容分发至全球的节点,从而缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性的技术。它能够有效解决网络带宽小、用户访问量大、网点分布不均等问题。

CDN 相关指标

header中的指标代表不同的含义

X-Cache

标识CDN是否命中

  • HIT:命中缓存节点,即在缓存节点可拉取数据,无需回源
  • MISS:未命中缓存节点,需要回源拉取数据

Pragma

Pragma:HTTP1.0 时代的遗留产物,该字段被设置为no-cache时,会告知浏览器禁用本地缓存,即每次都向服务器发送请求

Expires

Expires:HTTP1.0 时代用来启用本地缓存的字段,expires值对应一个形如Thu,31Dec2037 23:55:55GMT的格林威治时间,告诉浏览器缓存实现的时刻,如果还没到该时刻,标明缓存有效,无需发送请求

注意:如果浏览器与服务器的时间差距大,使用 Expires 就会影响缓存结果。

Cache-Control

Cache-Control 是 HTTP1.1 针对 Expires 时间不一致的解决方案,运用Cache-Control告知浏览器缓存过期的时间间隔而不是时刻,即使具体时间不一致,也不影响缓存的管理。

  • no-store:禁止浏览器缓存响应
  • no-cache:不允许直接使用本地缓存,先发起请求和服务器协商
  • max-age=delta-seconds:告知浏览器该响应本地缓存有效的最长期限,以秒为单位

说明:

  • Pragma,Cache-Control,Expires的执行优先级:Pragma > Cache-Control > Expires

ETag

Etag是文件的指纹标识符:HTTP1.1推出,如果文件内容修改,指纹会改变

  • EtagHTTP1.1中提出的,通过在jscssimage响应是添加一个唯一的参数
  • Etag有服务器端生成,随文件的改变而改变,Etags类似于文件的指纹
  • 浏览器通过Etag判断文件是否发生变化

协商缓存相关Header

  • Last-Modified:通知浏览器资源的最后修改时间
  • If-Modified-Since:得到资源的最后修改时间后,会将这个信息通过If-Modified-Since提交到服务器做检查,如果没有修改,返回304状态码
  • If-None-Match:本地缓存失效,会携带此值去请求服务端,服务端判断该资源是否改变,如果没有改变,直接使用本地缓存,返回304

缓存相关返回码:

  • 200 from cache:直接从本地缓存中获取响应,最快速,不产生数据流量
  • 304 Not Modified:协商缓存,浏览器在本地没有命中的情况下,请求头中发送一定的校验数据到服务端,如果服务端数据没有改变浏览器从本地缓存响应,返回304
  • 200 OK:以上两种缓存全都失败,服务器返回完整响应。没有用到缓存,相对最慢。

via

Via 一般报头由代理加入,正向和反向代理,并且可以在请求头和响应标头出现。作用如下:

  • 跟踪消息转发,避免请求循环
  • 识别请求/响应链中发送者的协议

防盗链的工作原理

访问网站来源和nginx中我们的配置做对比:通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。一旦检测到来源不是本站即进行阻止或者返回指定的页面

常用方法

  • 检测Referer
  • 资源签名检测

参考

  1. HTTP缓存策略
专栏文章
  1. HTTP 专题
  2. HTTP 响应码
  3. HTTP API 设计格式
  4. HTTPS中的加密算法相关概念
  5. CDN 介绍(当前)
  6. GraphQL 介绍
  7. HTTP2介绍
最新评论
加载中...
Home Archives Categories Tags Statistics