Ինչպես խնայել երթևեկությունը Apache2-ի mod_deflate-ով


Այս էջում

  1. 1 Միացնել mod_deflate-ը
  2. 2 Կազմաձևեք mod_deflate-ը

    1. 2.1 Ֆայլերի բացահայտ ներառում ըստ MIME տեսակի
    2. 2.2 Ֆայլերի բացահայտ բացառում ընդլայնման միջոցով
    3. 2.3 Կազմաձևման հետագա հրահանգներ
    4. 3 Փորձարկում
  3. 4 Հղումներ

Այս ձեռնարկում ես նկարագրելու եմ, թե ինչպես տեղադրել և կարգավորել mod_deflate-ը Apache2 վեբ սերվերի վրա: mod_deflate-ը թույլ է տալիս Apache2-ին սեղմել ֆայլերը և դրանք հասցնել հաճախորդներին (օրինակ՝ բրաուզերներին), որոնք կարող են կառավարել սեղմված բովանդակությունը, ինչը անում են ժամանակակից բրաուզերների մեծ մասը: mod_deflate-ի միջոցով դուք կարող եք սեղմել HTML, տեքստային կամ XML ֆայլերը մինչև մոտ. Իրենց սկզբնական չափերի 20-30%-ը՝ այդպիսով խնայելով ձեր սերվերի տրաֆիկը և դարձնելով ձեր մոդեմի օգտագործողներին ավելի երջանիկ:

Ֆայլերի սեղմումը մի փոքր ավելի մեծ բեռ է առաջացնում սերվերի վրա, բայց իմ փորձով դա փոխհատուցվում է նրանով, որ հաճախորդների միացման ժամանակները ձեր սերվերին շատ են նվազում: Օրինակ, մոդեմ օգտագործողին, որին անհրաժեշտ էր յոթ վայրկյան չսեղմված HTML ֆայլ ներբեռնելու համար, այժմ կարող է պահանջվել ընդամենը երկու վայրկյան նույն, բայց սեղմված ֆայլի համար:

Օգտագործելով mod_deflate-ը, դուք չպետք է վախենաք, որ բացառեք ավելի հին բրաուզերներով օգտվողներին, որոնք չեն կարող կառավարել սեղմված բովանդակությունը: Զննարկիչը բանակցում է սերվերի հետ նախքան որևէ ֆայլ փոխանցելը, և եթե զննարկիչը չի կարողանում կառավարել սեղմված բովանդակությունը, սերվերը ֆայլերը տրամադրում է չսեղմված:

mod_deflate-ը փոխարինել է Apache 1.3-ի mod_gzip-ին Apache2-ում: Եթե ցանկանում եք սպասարկել սեղմված ֆայլերը Apache 1.3-ով, նայեք այս ձեռնարկին. mod_gzip - սեղմված բովանդակության սպասարկում Apache վեբսերվերի կողմից:

Նախ ուզում եմ ասել, որ սա նման համակարգ ստեղծելու միակ տարբերակը չէ։ Այս նպատակին հասնելու շատ ուղիներ կան, բայց ես այս ճանապարհն եմ բռնում: Ես որևէ երաշխիք չեմ տալիս, որ դա կաշխատի ձեզ համար:

1 Միացնել mod_deflate-ը

Եթե դուք ունեք տեղադրված Apache2-ը, ապա mod_deflate-ը նույնպես պետք է արդեն տեղադրված լինի ձեր համակարգում: Այժմ մենք պետք է հնարավորություն տանք այն: Debian-ում մենք կարող ենք դա անել այսպես.

a2enmod deflate

Այնուհետև վերագործարկեք Apache2-ը.

service apache2 restart

Այլ բաշխումների դեպքում դուք կարող եք ձեռքով խմբագրել Apache2-ի կոնֆիգուրացիան՝ mod_deflate-ը միացնելու համար: Դուք կարող եք նման տող ավելացնել LoadModule բաժնում.

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Համոզվեք, որ կարգավորում եք ուղին դեպի mod_deflate.so, և դրանից հետո վերագործարկեք Apache2-ը:

2 Կազմաձևեք mod_deflate-ը

Ֆայլերի սեղմումը կարող է կազմաձևվել երկու եղանակներից մեկով. կա՛մ ֆայլերի բացահայտ բացառում ընդլայնման միջոցով, կա՛մ ֆայլերի բացահայտ ընդգրկում՝ ըստ MIME տեսակի: Դուք կարող եք միացնել mod_deflate-ը ձեր ամբողջ Apache2 սերվերի կամ պարզապես կոնկրետ վիրտուալ կայքերի համար: Կախված դրանից, կամ բացեք ձեր Apache2-ի գլոբալ սերվերի կազմաձևման բաժինը հիմա, կամ պարզապես vhost-ի կազմաձևման բաժինը, որտեղ ցանկանում եք միացնել mod_deflate-ը:

2.1 Ֆայլերի բացահայտ ընդգրկում ըստ MIME տեսակի

Եթե ցանկանում եք սեղմել միայն HTML, տեքստը և XML ֆայլերը, ավելացրեք այս տողը ձեր կազմաձևում.

AddOutputFilterByType DEFLATE text/html text/plain text/xml

Սա այն կոնֆիգուրացիան է, որը ես օգտագործում եմ, քանի որ չեմ ուզում սեղմել պատկերներ կամ PDF ֆայլեր կամ արդեն սեղմված ֆայլեր, ինչպիսիք են zip ֆայլերը:

2.2 Ֆայլերի բացահայտ բացառում ընդլայնման միջոցով

Եթե ցանկանում եք սեղմել բոլոր ֆայլերի տեսակները և բացառել ընդամենը մի քանիսը, ապա ձեր կազմաձևում կավելացնեք նման բան (2.1 բաժնի տողի փոխարեն).

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \
    \.(?:exe|t?gz|zip|bz2|sit|rar)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

Սա կսեղմի բոլոր ֆայլերը, բացառությամբ պատկերների (gif, jpg և png), արդեն սեղմված ֆայլերի (ինչպես zip և tar.gz) և PDF ֆայլերը, ինչը իմաստ ունի, քանի որ այս ֆայլերի տեսակները սեղմելով շատ բան չեք շահում:

2.3 Կազմաձևման հետագա հրահանգներ

Անկախ նրանից, թե դուք օգտագործում եք 2.1 կամ 2.2 բաժնի կոնֆիգուրացիան, դուք պետք է ավելացնեք այս տողերը ձեր կազմաձևում.

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

Այս տողերը որոշ ավելի հին բրաուզերների համար են, որոնք չեն աջակցում HTML փաստաթղթերից բացի այլ ֆայլերի սեղմում:

Կազմաձևումն այժմ ավարտված է, և այժմ պետք է վերագործարկեք Apache2-ը: Debian-ում դուք դա անում եք այսպես.

service apache2 restart

Կազմաձևման հետագա հրահանգներին ծանոթանալու համար դիտեք Apache Module mod_deflate-ը:

3 Փորձարկում

Մեր սեղմումը ստուգելու համար մենք մի քանի հրահանգ ենք ավելացնում մեր mod_deflate կազմաձևում, որոնք գրանցում են առաքված ֆայլերի սեղմման հարաբերակցությունը: Բացեք ձեր mod_deflate կոնֆիգուրացիան և ավելացրեք հետևյալ տողերը.

DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /var/log/apache2/deflate_log deflate

Համոզվեք, որ փոխարինում եք /var/log/apache2-ը ձեր Apache2-ի տեղեկամատյան գրացուցակով: Սա կարող է լինել /var/log/httpd, /var/log/httpd2 և այլն:

Այնուհետև վերագործարկեք Apache2-ը: Debian-ում դա արեք այսպես.

service apache2 restart

Այժմ, երբ ֆայլը պահանջվի, այն մուտք կգործի /var/log/apache2/deflate_log (կամ ցանկացած ֆայլում, որով այն փոխել եք): Տիպիկ մատյան գիծն ունի հետևյալ տեսքը.

"GET /info.php HTTP/1.1" 7621/45430 (16%)

Դուք տեսնում եք, որ info.php ֆայլը պահանջվել և առաքվել է: Նրա սկզբնական չափը եղել է 45430 բայթ, և այն սեղմվել է մինչև 7621 բայթ կամ իր սկզբնական չափի 16%-ը: Սա հիանալի արդյունք է, և եթե ձեր վեբ կայքը հիմնականում բաղկացած է HTML, տեքստից և XML ֆայլերից, mod_deflate-ը կխնայի ձեզ շատ տրաֆիկ, իսկ ցածր թողունակությամբ կապ ունեցող օգտատերերի համար ձեր կայքը շատ ավելի արագ կբեռնվի:

Եթե ձեր թեստերից հետո այլևս գրանցման կարիք չունեք, կարող եք հետարկել 3-րդ բաժնի փոփոխությունները և վերագործարկել Apache2-ը:

4 Հղումներ

  • Apache Module mod_deflate՝ http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
  • mod_gzip - սեղմված բովանդակության սպասարկում Apache վեբսերվերի կողմից՝ https://linux-console.net/linux_apache_mod_gzip