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