source

1and1 공유 호스트 WordPress 사이트에서 gzip을 작동시키는 방법

factcode 2023. 3. 20. 23:36
반응형

1and1 공유 호스트 WordPress 사이트에서 gzip을 작동시키는 방법

YSlow는 제 css를 압축해야 한다고 하는데, 몇 시간 동안 손질을 해도 제 웹사이트에서 gzip을 사용할 수 없습니다.현시점에서는 퍼포먼스 향상(실적이 있을까요?)이 노력할 가치가 있을지조차 잘 모르겠습니다.

1&1 공유 호스팅 계정으로 워드프레스 사이트를 운영하고 있습니다.

솔직히, 내가 이걸 가지고 뭘 하고 있는지 잘 몰라서 제대로 된 설정을 할 수 없는 것 같아.1&1에서 "Modules Apache mod_deflate 및 mod_gzip이 설치되어 있지 않습니다."라고 몇 군데 읽었기 때문에 이것이 문제의 일부라고 생각합니다.

다음 코드를 사용해 보았습니다.

이건 아무 것도 안 하는 것 같아.

<IfModule mod_gzip.c>  
    mod_gzip_on         Yes  
    mod_gzip_dechunk    Yes  
    mod_gzip_item_include file          \.(html?|txt|css|js|php|pl)$  
    mod_gzip_item_include handler       ^cgi-script$  
    mod_gzip_item_include mime      ^text\.*  
    mod_gzip_item_include mime      ^application/x-javascript.*  
    mod_gzip_item_exclude mime      ^image\.*  
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*  
</IfModule>  

이로 인해 500 에러가 발생합니다.

<Location />
# 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
# 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
</Location>

이것(html5 보일러 플레이트)도 아무것도 하지 않는 것 같습니다.

<IfModule mod_deflate.c>

  # Force deflate for mangled headers 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>

  # HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
  <IfModule filter_module>
    FilterDeclare   COMPRESS
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/plain
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/x-component
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/javascript
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/json
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xhtml+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/rss+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/atom+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/vnd.ms-fontobject
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/svg+xml
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/x-icon
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/x-font-ttf
    FilterProvider  COMPRESS  DEFLATE resp=Content-Type $font/opentype
    FilterChain     COMPRESS
    FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
  </IfModule>


  <IfModule !mod_filter.c>
    # Legacy versions of Apache
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
    AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
    AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
  </IfModule>

</IfModule>

이건 아무것도 안 하는 것 같은데...

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript

여기에 있는 튜토리얼을 따라 했습니다.

(http://mrrena.blogspot.com/2009/01/how-to-compress-php-and-other-text.html) 

이 때문에 제 사이트의 외관이 완전히 망가졌습니다.


Functions.php에서 시도해보니 html을 압축하는 것 같았지만 일부 js와 css는 압축되지 않았습니다.

if(extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler"))
    add_action('wp', create_function('', '@ob_end_clean();@ini_set("zlib.output_compression", 1);'));

그래서 잠시 후 1&1 웹호스팅 패키지를 가진 html, css 및 js 파일을 압축하는 방법을 알아냈습니다.감압은 지원되지 않습니다!

동적 콘텐츠는 웹사이트 루트 디렉토리에 php.ini를 추가합니다.php.ini 내용:

zlib.output_compression =1
zlib.output_compression_level =9

물론 다른 압축 수준도 선택할 수 있습니다. 9가 가장 높고 서버 부하가 가장 높습니다.그러면 동적으로 생성된 html 파일이 압축됩니다.

정적 파일(CSS, js 및 이미지...)을 압축하려면 .htaccess 파일을 수정해야 합니다.그 부록에 대해서

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteOptions Inherit
ReWriteCond %{HTTP:accept-encoding} (gzip.*) 
ReWriteCond %{REQUEST_FILENAME} !.+\.gz$ 
RewriteCond %{REQUEST_FILENAME}.gz -f 
RewriteRule (.+) $1.gz [QSA,L] 
</IfModule>

.htaccess 파일로 이동합니다(웹 사이트의 루트 디렉터리에서 해당 파일을 찾을 수 있습니다.그렇지 않으면 파일을 만듭니다).그러나 압축은 자동으로 수행되지 않습니다.따라서 파일을 직접 압축해야 합니다!예를 들어 7-zip을 사용하여 js 및 css 파일을 .gz ->로 압축하면 stylesheet.css.gz와 같이 됩니다.그런 다음 압축한 파일과 동일한 디렉토리에 파일을 업로드합니다.

이제 작동해야 합니다!

PS: 압축이 항상 도움이 되는 것은 아닙니다.파일이 매우 작을 때는 특히 그렇습니다.압축 전과 압축 후의 차이를 확인합니다.

내가 보기엔 당신은 당신의 선택권을 다 써버린 것 같군요.위의 내용을 보면 호스트에는 mod_deflate 또는 mod_gzip이 없는 것 같습니다.그래서 나는 네가 운이 다했다고 생각해.

PHP 솔루션은 실제로 HTML만을 위한 솔루션이기 때문에 그 솔루션만 사용하시면 됩니다.대부분의 경우 CSS와 JS는 첫 페이지에서만 다운로드되기 때문에 HTML은 압축을 추가하는 데 최적의 장소이기도 합니다.

PHP 스크립트를 사용하여 요청을 CSS 및 JS로 리다이렉트하고 PHP를 사용하여 압축할 수 있습니다.하지만 나는 그곳에 가지 않을 것이다. 왜냐하면 당신은 또한 실장해야 하기 때문이다.304 Not modified적절한 기한 만료 헤더를 설정합니다.

gzip 압축 사용
gzip 압축은 다음 코드를 사용하여 php.ini에서 활성화할 수 있습니다.

zlib.output_compression = On
zlib.output_compression_level = 9
allow_url_fopen = On

이 질문이 좀 오래되었다는 것을 알지만, 나에게 맞는 해결책을 찾았습니다.

다음을 포함하는 루트 폴더에 "php.ini" 파일을 추가합니다.

zlib.output_compression = On
zlib.output_compression_level = 9

그런 다음 (그리고 이것은 예상하지 못한 비트입니다) 다음 항목을 .htaccess 파일에 추가합니다.

AddType x-mapp-php6 .html .htm .php

네, 그렇습니다.넣었습니다php6그 안에.gzip 압축이 가능한 최신 안정판 PHP(현재는 5.4)가 실행된다고 합니다.이것도 실행됩니다..html그리고..htm파일을 압축할 수 있습니다(PHP 파서를 통해 실행되지 않은 파일은 압축되지 않습니다).PHP를 통해 실행하고 싶은 다른 확장자를 자유롭게 추가해 주세요( ).xml예를 들어)를 참조해 주세요.

그나저나, 만약 네가 도망친다면.xmlPHP를 통한 파일에는 xml 파일로 선언하는 헤더를 설정해야 합니다.그렇지 않으면 제대로 작동하지 않습니다.

이게 도움이 됐으면 좋겠네요!

저는 좋아요.

먼저 모든 디렉토리에 php.ini를 복사해야 합니다(1and1은 FAQ에서 이 조작을 용이하게 하기 위한 스크립트를 제공했습니다).

zlib.output_compression =1
zlib.output_compression_level =9

다음으로 htaccess에 추가합니다.

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_exclude file \.(gz|zip|xsl)$
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^text/plain$
mod_gzip_item_include mime ^image/x-icon$
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include mime ^text/javascript$
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_include mime ^text/x-js$
mod_gzip_item_include mime ^text/ecmascript$
mod_gzip_item_include mime ^application/ecmascript$
mod_gzip_item_include mime ^text/vbscript$
mod_gzip_item_include mime ^text/fluffscript$
mod_gzip_item_include mime ^text/css$
</IfModule>

.htaccess 파일에 다음 코드를 추가하여 압축을 활성화할 수 있습니다.

<IfModule mod_rewrite.c>

AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml image/svg+xml image/x-icon text/css application/x-javascript application/javascript application/x-httpd-php application/x-httpd-fastphp application/x-httpd-eruby 

</IfModule>

언급URL : https://stackoverflow.com/questions/11420992/how-to-make-gzip-work-on-1and1-shared-host-wordpress-site

반응형