我正在尝试通过AppEngine发送压缩文件,我的功能是
func handleWebGLRequest(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
blobKey, err := blobstore.BlobKeyForFile(c, "/gs/<path>/WebGL.datagz")
if err != nil {
fmt.Fprintf(w, "Problem: cannot find WebGL.data")
return
}
w.Header().Set("Content-Type", "blah/blah/application/octet-stream")
w.Header().Set("Content-Encoding", "gzip")
blobstore.Send(w, blobKey)
}
文件被发送,内容类型在响应头中正确显示“blah / blah / application / octet-stream”,但Content-Encoding从不在响应头中,我认为这是原因我正在做的其他问题。
有谁知道为什么它不起作用?
(如果重要的话 - 我正在使用chrome检查器来查看响应头,这里是源,未解析
HTTP / 1.1 200好的 内容类型:blah / blah / application / octet-stream 转移编码:分块 日期:星期二,2015年4月28日06:50:09 GMT 服务器:谷歌前端 替代协议:80:quic,p = 1)
非常感谢
答案 0 :(得分:1)
您无法控制此标头,服务器实际上会尽可能频繁地提供gzip压缩内容,只要他们确信浏览器会支持它。
How do I serve compressed content?
Google App Engine尽最大努力为支持它的浏览器提供gzip压缩内容。利用这种方案是自动的,不需要修改应用程序。