Text Compression

gzip
gzipμ μ¬μ©ν ν μ€νΈ μμΆ
gzip μμΆμ μ μ©νλ 4κ°μ§ λ°©λ²
- Apache λ Nginx λ± Webμλ²μμ μ²λ¦¬νκΈ°
- Tomcat μ΄λ Weblogic λ± μ΄ν리μΌμ΄μ μλ²(Was)μμ μ²λ¦¬νκΈ°
- Servlet Filter λ₯Ό λ±λ‘νμ¬ μ²λ¦¬νκΈ°
- μ μ μΈ νμΌμ 미리 gzip μΌλ‘ μμΆνμ¬ μ¬λ¦¬κΈ°
nginx μ gzip μΌλ‘ 컨ν μΈ μμΆ μ€μ νκΈ°
http { include /etc/nginx/mime.types; default_type application/octet-stream; # μμΆ μ€μ }
include /etc/nginx/mime.types;
/etc/nginx/mime.types νμΌμ ν¬ν¨μμΌ Nginxκ° νμΌ νμ₯μμ λ°λΌ μ μ ν MIME νμ μ μ€μ νλλ‘ ν©λλ€. μλ₯Ό λ€μ΄ μλμ κ°μ΄ μ²λ¦¬λ©λλ€. μ΄λ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈ(λΈλΌμ°μ )κ° νμΌμ μ¬λ°λ₯΄κ² ν΄μν μ μμ΅λλ€.
- .html νμΌμ text/html
- .jpg νμΌμ image/jpeg
default_type application/octet-stream;
/etc/nginx/mime.types νμΌμ ν¬ν¨μμΌ Nginxκ° νμΌ νμ₯μμ λ°λΌ μ μ ν MIME νμ μ μ€μ νλλ‘ ν©λλ€. μλ₯Ό λ€μ΄ μλμ κ°μ΄ μ²λ¦¬λ©λλ€. μ΄λ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈ(λΈλΌμ°μ )κ° νμΌμ μ¬λ°λ₯΄κ² ν΄μν μ μμ΅λλ€.
- MIME νμ μ μ€μ νμ§ μμ νμΌμ΄λ μ μ μλ νμ₯μμ νμΌμ λν΄ κΈ°λ³Έμ μΌλ‘ application/octet-stream νμ μ μ§μ ν©λλ€.
- application/octet-streamμ μΌλ°μ μΈ λ°μ΄λ리 νμΌμ μλ―Ένλ©°, λΈλΌμ°μ λ μ΄λ₯Ό λ€μ΄λ‘λνκ±°λ κΈ°λ³Έμ μΌλ‘ μ²λ¦¬ν©λλ€.
http { gzip on; gzip_disable "msie6"; }
- Gzip μμΆμ νμ±νν©λλ€.
- μ΄λ₯Ό ν΅ν΄ μλ²κ° μλ΅ λ°μ΄ν°λ₯Ό μμΆνμ¬ ν΄λΌμ΄μΈνΈ(λΈλΌμ°μ )λ‘ μ μ‘νλ―λ‘, λ°μ΄ν° μ μ‘λμ μ€μ΄κ³ νμ΄μ§ λ‘λ μλλ₯Ό κ°μ ν μ μμ΅λλ€.
- μμΆ λμμ μΌλ°μ μΌλ‘ HTML, CSS, JavaScript, JSON, XML λ± ν μ€νΈ κΈ°λ° νμΌμ λλ€.
- νΉμ μ¬μ©μ μμ΄μ νΈ(λΈλΌμ°μ )μ λν΄ Gzip μμΆμ λΉνμ±νν©λλ€.
- μ¬κΈ°μλ "msie6" (Microsoft Internet Explorer 6)μ λμμΌλ‘ μ§μ νμ¬, μ΄ λΈλΌμ°μ μμλ μμΆλ μ½ν μΈ λ₯Ό μ μ‘νμ§ μμ΅λλ€.
- Internet Explorer 6μ Gzip μμΆ μ²λ¦¬μ λ²κ·Έκ° μκ±°λ νΈνμ± λ¬Έμ κ° μμ μ μμ΄, μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μμΆμ λΉνμ±νν©λλ€.
nginx μ gzip μΌλ‘ 컨ν μΈ μμΆ μ€μ
gzip_comp_level 6; gzip_min_length 500; gzip_buffers 16 8k; gzip_proxied any;
- Gzip μμΆ μμ€μ μ€μ ν©λλ€. κ°μ 1(μ΅μ μμΆ, λΉ λ₯Έ μ²λ¦¬)μμ 9(μ΅λ μμΆ, λλ¦° μ²λ¦¬)κΉμ§ κ°λ₯ν©λλ€.
- 6μ μμΆλ₯ κ³Ό μ±λ₯ κ°μ κ· νμ΄ μ’μ μ€κ° μμ€μΌλ‘, κΈ°λ³Έκ°μ΄κΈ°λ ν©λλ€.
- λμ μμΆ μμ€μ νμΌ ν¬κΈ°λ₯Ό λ μ€μ΄μ§λ§ CPU μ¬μ©λμ΄ μ¦κ°ν©λλ€.
- μμΆμ μ μ©ν μλ΅ λ°μ΄ν°μ μ΅μ κΈΈμ΄λ₯Ό λ°μ΄νΈ λ¨μλ‘ μ§μ ν©λλ€.
- μ¬κΈ°μλ μλ΅ λ°μ΄ν°κ° 500λ°μ΄νΈ μ΄μμΌ λλ§ Gzip μμΆμ μ μ©ν©λλ€.
- μμ λ°μ΄ν°λ μμΆν΄λ ν¬κΈ° κ°μ ν¨κ³Όκ° λ―Έλ―Ένλ―λ‘, λΆνμν CPU μ¬μ©μ μ€μ΄κΈ° μν΄ μ€μ ν©λλ€.
- Gzip μμΆμ μ²λ¦¬νκΈ° μν΄ ν λΉν λ©λͺ¨λ¦¬ λ²νΌμ κ°μμ ν¬κΈ°λ₯Ό μ§μ ν©λλ€.
- 16 8kλ 16κ°μ 8KB λ²νΌλ₯Ό μ¬μ©νλ€λ μλ―Έμ λλ€(μ΄ 128KB).
- μ΄ μ€μ μ μμΆ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ° νμν λ©λͺ¨λ¦¬ 곡κ°μ μ μνλ©°, μλ²μ λ©λͺ¨λ¦¬μ λΆνμ λ°λΌ μ‘°μ ν μ μμ΅λλ€.
- νλ‘μλ μμ²μ λν΄ Gzip μμΆμ μ μ©ν 쑰건μ μ€μ ν©λλ€.
- anyλ λͺ¨λ νλ‘μ μμ²(μ: CDN, 리λ²μ€ νλ‘μ λ±)μ λν΄ μμΆμ νμ±νν©λλ€.
- μ΄λ ν΄λΌμ΄μΈνΈκ° μλ μ€κ° νλ‘μ μλ²λ₯Ό ν΅ν΄ μμ²μ΄ μ¬ λλ μμΆλ λ°μ΄ν°λ₯Ό μ μ‘νλλ‘ λ³΄μ₯ν©λλ€.
- any: νμ μμΆν©λλ€.
- off: νλ½μμμ μμ²ν κ²½μ° μμΆνμ§ μμ΅λλ€.
- expired: μμ² ν€λμ Expires κ° μκ³ λ§λ£λμμ κ²½μ°μλ§ μμΆν©λλ€.
- no-cache: μμ² ν€λμ Cache-Control κ° μκ³ no-cache μΌ κ²½μ°μλ§ μμΆν©λλ€.
- no-store: μμ² ν€λμ Cache-Control κ° μκ³ no-store μΌ κ²½μ°μλ§ μμΆν©λλ€.
nginx μ gzip μΌλ‘ content type μ€μ νκΈ°
gzip_types text/plain text/css text/js text/xml text/javascript application/javascript application/x-javascript application/json application/xml application/rss+xml image/svg+xml;
- Gzip μμΆμ μ μ©ν μ½ν μΈ μ MIME νμ μ μ μν©λλ€.
- κΈ°λ³Έμ μΌλ‘ text/htmlμ νμ μμΆλλ―λ‘ μ΄ λͺ©λ‘μ ν¬ν¨λμ§ μμλ λ©λλ€.
- μ΄ μ€μ μ gzip on;μ΄ νμ±νλ κ²½μ°μλ§ μ μ©λ©λλ€.
- text/plain: μΌλ° ν μ€νΈ νμΌ(μ: .txt).
- text/css: CSS μ€νμΌμνΈ νμΌ(μ: .css).
- text/js: JavaScript νμΌ. μ°Έκ³ : text/jsλ λΉνμ€ MIME νμ μΌλ‘, νλ μΉμμλ application/javascriptκ° κΆμ₯λ©λλ€. μΌλΆ λ κ±°μ μμ€ν μμ μ¬μ©λ μ μμ.
- text/xml: XML νμμ ν μ€νΈ νμΌ(μ: .xml).
- text/javascript: JavaScript νμΌ. μ°Έκ³ : κ³Όκ±°μ μ¬μ©λμμΌλ, νμ¬λ application/javascriptλ‘ λ체λ¨.
- application/javascript: νλ νμ€ JavaScript νμΌ(μ: .js).
- application/x-javascript: JavaScript νμΌμ λΉνμ€/λ κ±°μ MIME νμ . νΈνμ±μ μν΄ ν¬ν¨.
- application/json: JSON λ°μ΄ν° νμΌ(μ: .json).
- application/xml: XML νμμ μ ν리μΌμ΄μ λ°μ΄ν°.
- application/rss+xml: RSS νΌλ(μ: RSS XML νμΌ).
- image/svg+xml: SVG λ²‘ν° μ΄λ―Έμ§ νμΌ(μ: .svg).
μ£Όμμ¬ν
- text/jsμ application/x-javascriptλ λΉνμ€μ΄λ©°, μ΅μ μΉ νκ²½μμλ application/javascriptλ§ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. νμ§λ§ λ κ±°μ ν΄λΌμ΄μΈνΈλ₯Ό μ§μνλ €λ©΄ ν¬ν¨ν μ μμ΅λλ€.
- Nginxμ κΈ°λ³Έ gzip_typesμλ text/htmlμ΄ ν¬ν¨λμ΄ μμΌλ―λ‘, μ΄ μ€μ μ μΆκ°μ μΈ MIME νμ μ νμ₯νλ μν μ ν©λλ€.
- SVG(image/svg+xml)μ κ°μ νμΌμ ν μ€νΈ κΈ°λ°μ΄λ―λ‘ μμΆ ν¨κ³Όκ° ν¬μ§λ§, μ΄λ―Έ μμΆλ νμΌ(μ: JPEG, PNG)μ gzip_typesμ ν¬ν¨μν€μ§ μλ κ²μ΄ μΌλ°μ μ λλ€(μμΆ ν¨κ³Όκ° λ―Έλ―Έν¨).
nginx μ gzip μΌλ‘ 컨ν μΈ μμΆ μ΅μ’ μ½λ
http { # nginx μ λ©μΈ μ€μ νμΌμΈ nginx.conf μ http νλͺ©μ λ€μκ³Ό κ°μ΄ μ€μ include /etc/nginx/mime.types; default_type application/octet-stream; # μμΆ μ€μ gzip on; gzip_disable "msie6"; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 16 8k; gzip_proxied any; gzip_types text/plain text/css text/js text/xml text/javascript application/javascript application/x-javascript application/json application/xml application/rss+xml image/svg+xml; }
μμΆμ νλλ°μλ μκ°μ΄ μ‘°κΈ κ±Έλ¦¬μ§λ§ μμΆμ ν΄μ νλ λ°μλ μκ°μ΄ μ‘°κΈ κ±Έλ¦¬κΈ° λλ¬Έμ λͺ¨λ νμΌμ μμΆνκ³ μμΆν΄μ νλ κ² λ³΄λ€λ νμΌμ ν¬κΈ°κ° 2KBμ΄μμΌ κ²½μ°μλ μμΆμ νλκ²μ΄ λ«κ³ 2KB μ΄νμΌ κ²½μ°μλ μμΆμ μ§ννμ§ μλκ²μ΄ λ ν¨μ¨μ μ΄λΌκ³ ν©λλ€.