.htaccess를 통해 Gzip 또는 Deflate 압축을 활성화하는 방법은 무엇입니까? 통해 Gzip 또는 Deflate 압축을

.htaccess를 통해 Gzip 또는 Deflate 압축을 활성화하는 방법과 요즘 가장 적합한 압축 방법은 무엇입니까? 필요한 코드 예제.



답변

HTML5 보일러 플레이트 ( http://html5boilerplate.com )는 캐싱, MIME 유형 등과 같은 다른 많은 것들과 함께 가장 효과적이고 효과적인 솔루션 설정을 제공합니다. 적극 권장됩니다.

<IfModule mod_deflate.c>

# Force compression for mangled headers.
# http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>


# Compress all output labeled with one of the following MIME-types
# (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
#  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
#  as `AddOutputFilterByType` is still in the core directives).

<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule>

</IfModule>

편집 :이 질문과 답변은 몇 년 후에도 계속 upvoted되고 있기 때문에 더 완벽한 최적화를 위해 H5BP 서버 구성 링크를 연결하고 있습니다 .

편집 : https://github.com/h5bp/server-configs-apache에 대한 고정 링크


답변

Apache mod_deflate 문서, 특히 ” 이미지를 제외한 모든 압축 “예제를 참조하십시오. 그것은 나를 위해 잘 작동했으며 .htaccess다음과 같이 파일에 저장됩니다.

<IfModule mod_deflate.c>
        # Insert filter
        SetOutputFilter DEFLATE

        # Netscape 4.x has some problems...
        BrowserMatch ^Mozilla/4 gzip-only-text/html

        # Netscape 4.06-4.08 have some more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip

        # MSIE masquerades as Netscape, but it is fine
        # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

        # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
        # the above regex won't work. You can use the following
        # workaround to get the desired effect:
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

        # Don't compress images
        SetEnvIfNoCase Request_URI \
        \.(?:gif|jpe?g|png)$ no-gzip dont-vary

        # Make sure proxies don't deliver the wrong content
        Header append Vary User-Agent env=!dont-vary
</IfModule>

물론 httpd.conf파일에 다음 을 활성화 해야 합니다 mod_deflate.

LoadModule deflate_module libexec/apache2/mod_deflate.so


답변

.htaccesspublic_html디렉토리 의 루트에 있는 파일에 다음을 추가하여 내 사이트의 정적 자산 (MIME 유형별)에 디 플레이트를 활성화했습니다 .

<ifModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
  AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json
</ifModule>

파일 확장명으로 활성화 할 수도 있지만 편리한 구문은 없습니다.


답변