Programing

.htaccess에서“Vary : Accept-Encoding”헤더를 지정하는 방법

lottogame 2020. 10. 6. 07:41
반응형

.htaccess에서“Vary : Accept-Encoding”헤더를 지정하는 방법


Google PageSpeed는 JS 및 CSS에 대해 "Vary : Accept-Encoding 헤더를 지정"해야한다고 말합니다. .htaccess에서 어떻게해야합니까?


클라이언트가 gzip으로 인코딩 된 콘텐츠와 일반 콘텐츠를 모두받을 수 있기 때문에 css 및 js 파일에 대해 gzip 압축을 활성화한다는 의미라고 생각합니다.

이것은 apache2에서 수행하는 방법입니다.

<IfModule mod_deflate.c>
    #The following line is enough for .js and .css
    AddOutputFilter DEFLATE js css

    #The following line also enables compression by file content type, for the following list of Content-Type:s
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml

    #The following lines are to avoid bugs with some browsers
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</IfModule>

Vary Accept-Encoding헤더 를 추가하는 방법은 다음과 같습니다 . [src]

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

Vary:헤더는 특정 요청 헤더의 값에 따라 달라집니다이 URL에 대한 봉사 그 내용을 알려줍니다. 여기서는 Accept-Encoding: gzip, deflate이 헤더를 보내지 않는 클라이언트에게 제공되는 콘텐츠와는 다른 콘텐츠 (요청 헤더) 를 말하는 클라이언트에 대해 다른 콘텐츠를 제공한다고 말합니다 . AFAIK의 가장 큰 장점은 중간 캐싱 프록시가 이러한 변경으로 인해 동일한 URL의 두 가지 버전이 필요하다는 것을 알리는 것입니다.


Aularon이 프로세스를 완료하기에 충분한 단계를 제공하지 않은 것 같습니다. 약간의 시행 착오를 거쳐 전용 WHM 서버에서 Gzipping을 성공적으로 활성화 할 수있었습니다.

다음은 단계입니다.

  • WHM 내에서 EasyApache를 실행하고 Exhaustive Options 목록에서 Deflate를 선택한 다음 서버를 다시 빌드하십시오.

  • 완료되면 Services Configuration >> Apache Configuration >> Include Editor >> Post VirtualHost Include로 이동하고 모든 버전을 선택한 다음 mod_headers.c 및 mod_headers.c 코드 (Aularon의 게시물에서 위에 나열 됨)를 다른 파일 위에 붙여 넣습니다. 입력 필드.

  • 일단 저장되면 평균 75.36 %의 데이터 절약 효과를 볼 수있었습니다! 이 HTTP 압축 도구를 사용하여 전후 테스트를 실행하여 자신의 결과를 볼 수 있습니다. http://www.whatsmyip.org/http_compression/

이것이 당신 모두에게 효과가 있기를 바랍니다!

  • 매트

글꼴 파일도 gzip으로 압축하십시오!

add "x-font/otf x-font/ttf x-font/eot"

다음과 같이 :

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml x-font/otf x-font/ttf x-font/eot

그것이 무엇인지 명확히하기 위해 많은 시간을 보냈습니다. 이 게시물읽고 고급 .HTACCESS코드 를 얻고 그 기능 을 배우십시오.

당신이 사용할 수있는:

Header append Vary "Accept-Encoding"
#or
Header set Vary "Accept-Encoding"

이것은 나를 미치게 만들었지 만 aularon의 편집에 "Vary". 그래서 나를 위해 문제를 해결 "Vary Accept-Encoding"하도록 변경 했습니다 "Vary: Accept-Encoding".

나는 게시물 아래에 댓글을 달았지만 그것이 나를 허락하지 않을 것 같습니다.

어쨌든, 나는 이것이 내가 겪었던 것과 같은 문제를 누군가에게 구하기를 바랍니다.


누구든지 NGINX구성 파일에 이것을 필요로하는 경우 여기에 스 니펫이 있습니다.

location ~* \.(js|css|xml|gz)$ {
    add_header Vary "Accept-Encoding";
    (... other headers or rules ...)
}

파일이 압축되었는지 여부를 지정하거나 확인할 필요없이 모든 요청에 ​​대해 모든 파일로 보낼 수 있습니다.

다운 스트림 프록시에 향후 요청 헤더를 일치시키는 방법을 알려서 원래 서버에서 새 응답을 요청하는 대신 캐시 된 응답을 사용할 수 있는지 여부를 결정합니다.

<ifModule mod_headers.c>
  Header unset Vary
  Header set Vary "Accept-Encoding, X-HTTP-Method-Override, X-Forwarded-For, Remote-Address, X-Real-IP, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port, X-Forwarded-Server"
</ifModule>
  • unset선택적으로, 오래된 GoDaddy와 호스팅에 몇 가지 버그를 수정하는 것입니다.

참고URL : https://stackoverflow.com/questions/3641197/how-to-specify-vary-accept-encoding-header-in-htaccess

반응형