通常可以通過檢查Accept-Encoding請求頭來檢測是否請求了壓縮。 Google App Engine會剝離此標頭。有沒有其他的方法來檢測這種事情?我想知道GAE是否會在發送之前壓縮特定響應。在GAE中檢測壓縮?
1
A
回答
0
我目前的解決方案是使用另一個se檢測壓縮。
我已經將我的頁面分成初始化存根和內容。存根包含一點,導致瀏覽器僅向第三方服務器請求壓縮檢測。如果通過,它會加載並注入內容。
這並不是最優的,但它確實有效,並且在不會對用戶產生重大影響的情況下減少了不負責任的殭屍程序的流量。
編輯:它發生在我身上,可能從客戶端推斷出這一點。使用AJAX並檢查的響應標頭Content-Encoding
意味着GAE認爲客戶端需要壓縮,這意味着客戶端要求壓縮。
// Certain files aren't compressed by GAE even if requested so 'canary'
// needs to be of a type and size to trigger compression
$.get('canary').done(function(data, textStatus, jqXHR){
// request succeeded
var contentEncoding = jqXHR.getResponseHeader('Content-Encoding');
if(contentEncoding != null) {
if(!['gzip','deflate','sdch','br'].every(function(v,i,a){
return contentEncoding.indexOf(v) < 0;
})) {
// accepted compression found, initiate remainder of page load
return;
}
}
// no acceptable compression, kill page
}).fail(function(jqXHR, textStatus, errorThrown) {
// request failed, kill page
});
2
GAE does this automatically,你不必擔心它在你的應用程序:
谷歌應用程序引擎會盡力滿足gzip壓縮的內容,以支持它的瀏覽器 。利用此方案是自動的,並且不需要對應用程序進行修改。
我們使用請求頭(Accept-Encoding,User-Agent) 和響應頭(Content-Type)的組合來確定最終用戶是否可以利用gzip內容。這種方法避免了 在流行瀏覽器中使用gzip內容的一些衆所周知的錯誤。要向 強制gzip內容提供服務,客戶端可能會提供'gzip'作爲Accept-Encoding和User-Agent請求標頭的值 。 如果不存在Accept-Encoding標頭,內容將永遠不會被壓縮。
和頭可在從應用程序GAE的實際的MSG到/來檢查(在生產中只,開發服務器不進行壓縮)。我看到(在Firefox):
在請求:
的Accept-Encoding: 「gzip的,放氣」
在響應:
內容Enconding: 「gzip」
相關問題
- 1. 子採樣壓縮檢測
- 2. 檢測JPG壓縮率?
- 3. 檢測壓縮文件java
- 4. 如何防止GAE解壓縮壓縮的xml供稿?
- 5. 檢測通過Apache共享壓縮
- 6. 如何檢測無損JPEG 2000壓縮?
- 7. 檢測出壓縮JavaScript代碼
- 8. 從命令行在Hadoop中壓縮編碼解碼器檢測
- 9. 在yii中壓縮/解壓縮文件
- 10. LZO壓縮測試失敗
- 11. 使用Redhat中的命令行解壓縮時檢測覆蓋
- 12. 壓縮域中的運動檢測(JPEG/Mpeg4/H264)
- 13. 壓縮在node.js中
- 14. 這裏描述送回壓縮JSON中的Restlet/GAE
- 15. 在Ubuntu C++中檢測鍵盤按壓
- 16. 在Chromebook上測試ARC壓縮
- 17. GAE中的「檢測」和加載「插件」
- 18. 在java中解壓縮在visual basic中壓縮的字符串
- 19. 在C#asp.net中壓縮字符串並在JavaScript中解壓縮
- 20. 如何在Java中壓縮JSON和在Javascript中解壓縮
- 21. 在C#中壓縮字符串並在Actionscript中解壓縮
- 22. 縮寫檢測
- 23. 推薦的方法來檢查文件是否壓縮/壓縮
- 24. 檢查md5的壓縮文件,而不完全解壓縮
- 25. 壓縮和解壓縮在PHP和JS
- 26. DeflateStream壓縮/解壓縮inconsitency
- 27. 壓縮CSS YUI壓縮器
- 28. Asmx Webservice壓縮/解壓縮?
- 29. webpack壓縮不壓縮
- 30. 壓縮在openssl
我意識到這一點。我注意到,似乎編碼不佳或老化的機器人似乎是不請求壓縮內容的主要請求者。他們甚至僞造用戶代理。我寧願否認這些客戶端訪問,而不是提供配額內容。至於Accept-Encoding標頭,它並沒有達到應用程序本身的程度。我想象一下,谷歌處理壓縮的一部分。 – Ouroborus
那麼,文檔是清楚的 - '用戶代理'被GAE剝離... –
這很好。但問題是:應用程序是否有其他方式檢測到請求了壓縮(或檢測到GAE將應用壓縮)? – Ouroborus