2011-06-10 3 views
3

Chrome 및 Firefox에서 Yslow 도구를 사용하여 개발 사이트를 검토 중이며 적절한 내용을 gzip으로 제안합니다. 시작점으로 "tools.gzip.on = True"를 내 [/] 구성에 추가했습니다. 구성 파일과 블록은 올바르게 구문 분석되는 것으로 알고 있습니다. 응답 헤더에서 캐싱을 사용하지 않도록 설정하는 옵션도 추가했기 때문에, 사이트를 개발할 때 자주 파일을 변경하기 때문입니다. 내 응답에 "Expires"및 "Pragma : no-cache"헤더가 표시됩니다.tools.gzip이 cherrypy의 콘텐츠를 압축하지 않는 것 같습니다.

어떤 이유로 든 구성 파일을 변경하고 (꼭 필요한 것은 아닌) 프로세스를 다시 시작한 후에도 Yslow는 여전히 gzip을 사용하지 않는다고보고합니다. 나는 또한 wget을 사용하고 Content-Encoding 헤더를 보지 않았다.

다른 사람이 어떻게 진행되고 있는지 확인할 수있는 방법을 제안 할 수 있습니까? 문제가 gzip 설정을 무시하는 cherrypy인지 Yslow가 사실을 잘못 알고 있는지 궁금합니다. 전에 Yslow와 문제가 없었어요. 전 Yslow쪽으로 기울어 져 요.

"wget ​​-S"로 표시된 헤더가 gzip 인코딩을 표시하지 않더라도 Yslow가 (외부의 CSS 및 JavaScript 파일이 동일한 cherrypy 프로세스에서 제공됨) 압축되어야한다고보고합니다. 메인 페이지 자체 (동적 내용)에서도 마찬가지입니다.

내 [CSS] 및 [/ JS] 블록에 "tools.gzip.on = True"를 추가하려고 시도했으며, 모두 "tools.encode.on = True"로 설정하려고했습니다. gzip이 작동하려면 인코딩이 가능해야한다고 생각했던 것과 동일한 블록.

미리 감사드립니다. cherrypy.lib.gzip에 대한

답변

9

3.2 문서화 문자열 : 당신은 JS와 CSS를 언급하기 때문에

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 유형입니다. 당신은 그 thusly 히 변경할 수 있습니다

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

내가 CherryPy 3.1.2, 페도라 (14)와 함께 제공되는 내 [/ CSS] 구성 블록이 추가 한 빌드를 사용하고 있습니다 : 'tools.gzip.on = True tools.gzip.mime_types = [ 'text/html', 'text/plain', 'text/css'] ' 그리고 프로세스를 다시 시작한 후에도 yslow는 여전히 내 CSS 파일이 gzip되지 않았다고보고합니다. "wget ​​-S"는 cherrypy가 mime 유형 text/css로 CSS 파일을 제공하고 있음을 확인하므로 MIME 유형이 정확합니다. 아이디어가 누락되었을 수 있습니다. 그렇지 않다면, 나는 단지 encoding.py 파일의 백업을 만들고 거기에 디버깅 로직을 던져서 무슨 일이 일어나는지 보여줄 것입니다. –

+1

나는 마침내 더 많은 시간을 갖게되었습니다. 나는 원래 무엇을했는지는 모르지만'tools.gzip.on = True'와'tools.gzip.mime_types = [ 'text/html', 'text/plain', 'text/css' ','text/javascript ']'를 my [/] 설정 블록에 추가하십시오. YSlow는 이제 행복합니다. 압축해야하는 모든 것이 압축됩니다. 당신의 도움을 주셔서 감사합니다. –

+0

명확히하기 : MIME 유형을 설정하려면 * tools *에서 * tools.gzip.on = True가 필요합니다. – nikow

1

가 나는 MIME_TYPE으로 '응용 프로그램/*'도 포함했다 자바 스크립트에 대해이 작업을하려면 :

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

을 CherryPy 3.2 이상, 당신은에이 단축 될 수 있습니다 .

내 설정의 관련 부분은 다음과 같습니다

'tools.gzip.on': True,  
'tools.gzip.mime_types': ['text/*', 'application/*'], 
관련 문제