tools.gzip似乎不压缩cherrypy中的内容



我正在Chrome和Firefox下使用Yslow工具查看我的开发网站,其中一个建议是我对合适的内容进行gzip。作为一个起点,我刚刚在我的[/]配置中添加了"tools.gzip.on=True"。我知道配置文件和块的解析是正确的,因为我还在响应头中添加了禁用缓存的选项,因为我在开发网站时经常更改文件。我在回复中看到"Expires"one_answers"Pragma:no cache"标题。

出于某种原因,即使在更改了配置文件(并重新启动进程,这不是绝对必要的)之后,Yslow仍然报告我没有使用gzip。我也一直在使用wget,但没有看到Content-Encoding头。

有人能建议我如何验证发生了什么吗?我想知道问题是cherrypy忽略了gzip设置,还是Yslow只是搞错了事实。我以前从来没有遇到过Yslow的麻烦,所以我倾向于前者。

我要补充的是,Yslow只是报告我的外部CSS和JavaScript文件(由同一个cherrypy进程提供)需要压缩,即使"wget-S"显示的标题即使在主页面上也没有显示gzip编码(这是动态内容)。

我尝试过在我的[/css]和[/js]块中添加"tools.gzip.on=True",也尝试过在所有相同的块中设置"tools.encode.on=True",我认为可能必须启用编码才能让gzip工作。

提前谢谢。

cherrypy.lib.gzip:的3.2文档字符串

def gzip(compress_level=5, mime_types=['text/html', 'text/plain'], debug=False):
    """Try to gzip the response body if Content-Type in mime_types.
    cherrypy.response.headers['Content-Type'] must be set to one of the
    values in the mime_types arg before calling this function.
    The provided list of mime-types must be of one of the following form:
        * type/subtype
        * type/*
        * type/*+subtype
    No compression is performed if any of the following hold:
        * The client sends no Accept-Encoding request header
        * No 'gzip' or 'x-gzip' is present in the Accept-Encoding header
        * No 'gzip' or 'x-gzip' with a qvalue > 0 is present
        * The 'identity' value is given with a qvalue > 0.
    """

我的钱花在MIME类型上,因为你提到了JS和CSS。你可以这样改变:

[/static]
tools.gzip.mime_types: ['text/html', 'text/plain', 'text/javascript', 'text/css']

在CherryPy 3.2+中,您可以将其缩短为:

[/static]
tools.gzip.mime_types: ['text/*']

为了让Javascript能够工作,我还必须将"application/*"作为mime_type。

我的配置的相关部分如下:

'tools.gzip.on': True,    
'tools.gzip.mime_types': ['text/*', 'application/*'],

相关内容

  • 没有找到相关文章

最新更新