2014-10-29 35 views
1

在App Engine的Memcache中緩存項目時,我使用gzip壓縮來節省空間並獲得低於某些文件的1MB限制。在App Engine上返回Gzip-ed響應對象

因爲我也把渲染頁面放到memcache中,所以如果它接受gzip encdoing,直接返回gzip體到客戶端會更好更快。

不幸的是,請求的Accept-Encoding只有價值identity(使用帶有Go的AE dev服務器),這對我來說意味着我必須按原樣返回主體(即純html)。

是不是應該自己gzip內容?或者我總是可以使用適當的標題返回gzip內容,並且當客戶端不支持壓縮時,AE基礎結構會解壓縮這些內容嗎?

畢竟我希望通過在輸出狀態中緩存響應來獲得更好的響應時間。

回答

0

用於緩存的響應,如果你的反應是公開的(對所有用戶相同的副本),您可以通過設置適當的HTTP頭,例如利用谷歌的邊緣緩存:

Cache-Control: public,max-age=86400 
Expires: Sat, 16 May 2015 07:23:15 +0000 

關於壓縮,據我所知,Google會盡可能自動壓縮HTTP響應中的內容。沒有必要手動處理。

+0

「沒有必要手動處理。」因爲我已經在緩存中存儲了壓縮響應(爲了節省空間),所以我寧願直接發送它們,而不是在服務器中解壓縮它們(代價高昂),只是爲了壓縮它們再次... – Timm 2015-05-18 19:32:38

+0

請參閱https://cloud.google.com/appengine/docs/go/requests,請求標題已被「消毒」,但不知道客戶解壓器的能力無法正常工作。 我建議完全跳過壓縮並讓Edge Cache完成這項工作。它可以緩存超過1MB的響應,並且沒有額外的成本。 – 2015-05-19 05:49:09