Ինչպես խնայել երթևեկությունը Apache2-ի mod_deflate-ով
Այս էջում
- 1 Միացնել mod_deflate-ը
2 Կազմաձևեք mod_deflate-ը
- 2.1 Ֆայլերի բացահայտ ներառում ըստ MIME տեսակի
- 2.2 Ֆայլերի բացահայտ բացառում ընդլայնման միջոցով
- 2.3 Կազմաձևման հետագա հրահանգներ
- 3 Փորձարկում
Այս ձեռնարկում ես նկարագրելու եմ, թե ինչպես տեղադրել և կարգավորել 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