HTTP報文頭加上Vary讓CDN快取不同版本
阿新 • • 發佈:2020-10-29
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