日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

标头“Vary:Accept-Encoding”指定方法及其重要性分析

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 标头“Vary:Accept-Encoding”指定方法及其重要性分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://www.webkaka.com/blog/archives/how-to-set-Vary-Accept-Encoding-header.html

在webkaka的網站速度診斷性能優化里有一項叫指定“Vary:Accept-Encoding”標頭,可能很多人不太明白這是什么意思,不知道它對網站的影響有多大,不知道如何進行優化,為此,本文將給大家闡述下“Vary:Accept-Encoding”標頭的意義以及設置方法。

指定“Vary:Accept-Encoding”標頭

??????指定“Vary: Accept-Encoding”標頭的意義

????? 指定“Vary: Accept-Encoding”標頭,用一句話來說明它的意義,就是“告訴代理服務器緩存兩種版本的資源:壓縮和非壓縮,這有助于避免一些公共代理不能正確地檢測Content-Encoding標頭的問題。”不過我想很多人都不理解這句話是什么意思,所以需要更詳細的解釋。

????? 先來看看下面這幅圖:

網頁從請求到響應的過程

????? 這個圖顯示了一個網頁從請求到響應的過程。正常情況下,“Response”的結果是可讀文本,但并不是所有的服務器端都返回這樣的正常的結果到用戶端,有的返回一堆亂碼,這顯然是不正常的。

????? 當瀏覽器發出一個請求時,會包含一些HTTP頭信息,服務器會根據這些頭信息決定返回什么樣的東西(這是一個移動客戶端嗎?它能否處理壓縮內容?它是否需要特定的語言支持?)。

????? 直接訪問是好的,但現在網絡使用了中間高速緩存(cache)和內容分發網絡(CDN)。這就產生了一個問題,緩存如何使用頭信息決定返回什么?它能否復制服務器端的決策邏輯?

????? “Vary”解決了這個問題,“Vary”頭描述什么信息“唯一地”標識一個請求——傳入的請求只有完全匹配緩存的“Vary”信息,緩存才被使用。

????? 假如沒有“Vary”頭,那么如果由于某種原因,客戶端有一個未壓縮的版本在其緩存中的文件,它會不知道隨后再次要求它的壓縮版本,而不是只從緩存中使用未壓縮的文件。——這就很好的解釋了“Vary”頭信息的重要意義。

????? 設想有兩個客戶,一個使用的舊瀏覽器不支持壓縮,一個使用新的瀏覽器支持壓縮,如果他們都請求同一個網頁,那么取決于誰先請求,壓縮或非壓縮版本便存儲在CDN上。這樣問題就出現了,舊瀏覽器請求常規網頁但獲得緩存的壓縮版本,而新瀏覽器會獲得緩存的非壓縮版本但嘗試去“解壓”它。無論哪種方式都是壞消息。解決方法是,源服務器回送“Vary: Accept-Encoding”。

????? 現在的中間CDN會存儲獨立的緩存條目,一個是Accept-encoding: gzip ,而如果你沒有發送header,則存儲另一個。

??????標頭“Vary:Accept-Encoding”指定方法

????? 現在的新瀏覽器都支持壓縮了,因此如果網站啟用了GZip,可以無需再指定“Vary: Accept-Encoding”標頭,不過指定“Vary: Accept-Encoding”標頭會有更高的保險,而它并不需要你額外的開銷,為什么不指定呢?下面是設置方法:

????? Apache/.htaccess

????? <IfModule mod_headers.c>
??????? <FilesMatch ".(js|css|xml|gz|html)$">
????????? Header append Vary: Accept-Encoding
??????? </FilesMatch>
????? </IfModule>

????? Nginx

????? gzip_vary on

????? IIS

????? 在web.config里加上如下配置,web.config位置在:%windir%\Microsoft.NET\Framework\.net版本號\CONFIG\Web.config?。

????? <system.webServer>
??????? <httpProtocol>
????????? <customHeaders>
????????? <remove name="Vary"></remove>
????????? <add name="Vary" value="Accept-Encoding"></add>
????????? </customHeaders>
??????? </httpProtocol>
????? </system.webServer>

????? 指定“Vary:Accept-Encoding”標頭,網站需要啟用GZip,才變得有意義。網站如何啟用GZip?可以看看如下的教程:

??????IIS啟用GZip壓縮的詳細教程【圖解】

??????Nginx 如何配置GZip壓縮

??????如何啟用Apache的GZip壓縮功能

??????lighttpd 如何配置GZip壓縮

??????相關文章

??????IIS啟用GZIP壓縮css、js無效的原因及解決方法

??????IIS啟用GZip失敗之原因:臨時目錄權限沒設好

??????圖片GZip壓縮后體積會變大

??????GZip壓縮啟動后js css不能運行的解決方法

轉載于:https://www.cnblogs.com/niaowo/p/4000691.html

總結

以上是生活随笔為你收集整理的标头“Vary:Accept-Encoding”指定方法及其重要性分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。