HTTP报文头加上Vary让CDN缓存不同版本

CDN通常是针对路径来做的缓存,例如当我们访问页面https://xxx.com/a/b/c.html的时候,一般是针对/a/b/c.html做的缓存,也就是每个人看到的/a/b/c.html页面都是一样的

但是,通常我们在手机端和PC端看到的页面其实是有区别的,在我们的页面都有不同版本的情况下,CDN如何知道缓存那个版本呢?它是无法预测用户是来自移动端,还是来自PC端的。
这时候就得再添加一个User-Agent判断了,HTTP头中的Vary就是干这个的!意思就是告诉除了路径,还要加上其他的选项做缓存。

nginx配置示例

server {
  server_name localhost;
  listen 80;
  gzip_static on;
  # root /var/www/html/public;
  location ~ ^/.*\.(txt|js|js\.map|css|jpg|png|gif|exe|ico) {
    root /var/www/html/app/public;
    expires max;
  }
  # 添加header代理告诉CDN走不同的缓存
  add_header Vary "User-Agent";
}

针对特殊需求,还可以加入其他的标识,例如:Accept-Encoding、Cookie

posted @ 2020-10-29 11:44  雪山飞猪  阅读(448)  评论(0编辑  收藏  举报