1. 程式人生 > 實用技巧 >HTTP報文頭加上Vary讓CDN快取不同版本

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