3

我在測試是否通過Apache的mod_deflate gzip對內容進行測試時似乎獲得了不同的結果。可靠地測試服務器是否gzip內容

我測試相同的URL和一臺PC上我有Content-Encoding:gzip出現在響應頭,不同的PC有幾乎相同的設置(Windows版本,瀏覽器版本等),我不和頁面加載上更慢和更大的尺寸。兩種情況下均存在請求標題Accept-Encoding:gzip, deflate, lzma, sdch, br

  1. 有人可以推薦一種可靠的測試方法,內容是gzipped嗎?可靠的我的意思是 - 除了Chrome開發工具。
  2. 爲什麼有些用戶可能會有完整的內容,即使他們要求一個gzipped的內容?它是與服務器相關還是客戶端相關?我如何確保100%的用戶獲得gzip內容?
+0

也許第二臺PC在代理服務器後面(可能是透明的),它對頭文件做了一些事情。 – wOxxOm

+0

@ wOxxOm,不錯的主意,但是當我測試另一個網址時(例如google.com),結果是一樣的,兩臺PC都會得到gzipped – skip405

+1

堅持使用代理建議嘗試不使用https的網站,因爲這通常會阻止代理從閱讀內容。或許。[bing](http://www.bing.com/)。 –

回答

2

有人可以推薦一種可靠的測試方法,內容是gzipped嗎?我的意思是說 - 除了Chrome開發工具。

[答案] - 一個可靠的方法來測試將是找出從服務器檢索到的內容的大小,並與接收的內容長度進行比較。根據這篇文章(content-length when using http compression),內容長度將是壓縮內容的大小。

如果內容是文本,壓縮比率將是3:1或更多。但是,如果你發送一個壓縮的圖像,它會少得多。無論如何,如果壓縮工作,它將大於1:1。

對於測試設置,您可以託管一組測試數據,如文本文件,apache上的圖像以及其大小的知識。可能是文件的名稱可能是它們的大小,如1024bytes.txt。在客戶端,您可以發送請求來檢索數據並比較響應頭(Content-Length)以檢查內容的大小。您可以使用諸如摩卡&柴等工具自動執行此操作。

爲什麼有些用戶可能會有完整的內容,即使他們要求一個gzipped的?它是與服務器相關還是客戶端相關?我如何確保100%的用戶獲得gzip內容?

[Answer] - 您只能從服務器端確保這一點。會有客戶端限制和錯誤。對於例如https://support.microsoft.com/en-us/help/871205/internet-explorer-may-not-decompress-http-content-when-you-visit-a-web-site。正如你所看到的,Windows bug會導致壓縮失敗。這個或類似的錯誤可能可以解釋爲什麼你在不同的機器上看到不同的行爲。

我們如何解決這個問題?

您可以將您的測試設置與可靠的數據提供者進行比較。就你而言,你確實通過www.bing.com進行了驗證。一旦您確認了您的測試設置和客戶端可以正常使用可靠的源,請使用您的apache服務器進行測試並進行認證。

1

假設問題是評論中討論的高速緩存代理。

有幾個選項。

  1. Apache可以向通知緩存不存儲內容的內容添加http頭。把下面的到你的虛擬主機塊

    頁眉設置緩存控制的「私人」

    沒有承諾,將上面的工作,它可以通過代理忽視的諮詢。

  2. 更可靠的方法是使用HTTPS,這可以防止幾乎所有代理讀取主機名以外的任何內容,因此它們不可能充當緩存。 SSL證書相當便宜,但您可以先使用自簽名證書免費測試。

有創建self signed cert here然後複製您的虛擬主機塊粘貼一個新的改變端口設置爲443,增加了以下說明:

<VirtualHost *:443> 

    .... Existing config 

    SSLEngine on 
    SSLCertificateFile /path/to/your_domain_name.crt 
    SSLCertificateKeyFile /path/to/your_private.key 

</VirtualHost> 

最後一點,我想指出,如果組織實施了緩存代理。這樣做的目的可能是提高用戶的性能。要知道技術變革是否能提高最終用戶的速度,最好的方法就是衡量它。 Chrome開發人員工具包括網絡監視器,其中包含頁面加載時間和其他許多有趣的細節。

相關問題