Skip to content

GZIP ашиглан вэб нээгдэх хурдыг хэрхэн нэмэгдүүлэх тухай

December 1, 2006

Вэб хийдэг хүн болгоны толгойны өвчин бол вэбээ хэрхэн хурдан нээгддэг болгох бэ гэсэн бодол. Энэ өвчингөөс гарахад тань бага ч болсон тус болох болов уу гэж бодоод үүнийг бичиж байна.

Вэб удаан нээгдэх асуудлыг ерөнхийлөн 3 хувааж болно.

1. Таны интернэт холболт удаан
2. Таны сервер байрлаж буй газрын болон таны вэбийг үзэж буй газрын хоорондох интернэт сүлжээний урсгал бага буюу удаан
3. Таны серверийн ачаалал ихэдсэн, ялангуяа динамик вэб сайтуудын хувьд

Эхний 2 тохиолдол нь яах аргагүй мэдээлэл дамжих явцад гарч буй бэрхшээл учраас дамжуулах мэдээллийг аль болох бага байлгахыг оролдох хэрэгтэй гэсэн үг. Мэдээж зурагнуудаа вэбэд зориулан физик хэмжээг нь багасгах, олон зураг нэг хуудсанд оруулахгүй байх гэх мэтчилэнгээр аргууд хэлж болно. Харин физик утгаар нь багасгаж болохгүй текстийг яах бэ гэдэг асуудал гарч ирнэ. Жишээ нь миний блогийн нүүр хуудас төдийлөн их зураггүй атлаа хэмжээ нь 60 K орчим болж байна. Та энд дарж дэлгэрэнгүй тайланг харна уу. Энд байгаагаас HTML, Javascript, CSS зэрэг нь бүгд текстүүд, тэгээд бас чамгүй хэмжээ эзэлж буйг та анхаарсан байх.


Ерөнхийдөө вэб серверээс HTML код вэб хөтлөгч рүү буцаах бөгөөд вэб хөтлөгч нь түүнийг эхэлж аваад тэгээд тухайн кодонд байгаа харгалзах зураг, гадаа css файл гэх мэд агуулгуудыг тусад нь харгалзах серверүүд рүү нь дахин HTTP хүсэлт илгээн авдаг. Тэгэхлээр эхлээд дамжиж байгаа HTML хуудсыг хэмжээг нь багасгах асуудал гарч ирж байгаа юм.

Тэгвэл яг энэ ажлыг хийж өгөхөөр Apache, PHP бэлэн байдалд байна шүү. Дэлгэрэнгүй тайлбарлаваас, хэрвээ HTTP хариултын толгойд Content-Encoding: gzip гэсэн утга дамжуулвал тухайн вэб хөтлөгч нь тухайн дамжиж ирж байгаа HTPP хариултын бие хэсгийг биднийхээр HTML кодыг цаанаасаа GZIP хэлбэрээр шахагдан ирсэн хэмээн үзэж шууд задалж уншина. Харин үүнээсм өмнө тухайн вэб хөтлөгч нь өөрөө GZIP хэлбэрийн шахалттай агуулгыг задалж чадах эсэхээ Accept-Encoding: gzip хэлбэрээр дамжуулсан байх ёстой.

За одоо сервер талдаа хэрхэн агуулгыг шахаж илгээх тухай дэлгэрэнгүй үзье. Ихэнх вэб серверүүд дээр хэрэглэгчийн Apache тохиргооны файл буюу .htaccess файлыг ашиглахыг зөвшөөрсөн байдаг. Өөрөөр хэлбэл та харгалзах бичиглэлүүдээ бичээд л түүнийгээ .htaccess файлд хадгалаад серверийнхээ харгалзах хавтсанд хуулахад тухайн хавтасны хувьд тэр .htaccess файл биелэнэ гэсэн үг. Жишээ нь хамгийн энгийн бөгөөд их хэрэглэдэг хэлбэр нь аливаа нэг хавтас руу орох хандалтыг нууц үгээр хамгаалах юм. Хэрвээ та өөрийн сервертэй бол хэрэглэгчийн хавтасны .htaccess файл ажилладаг болгохын тулд Apache-ийн үндсэн тохиргооны файлдаа хавтсанд харгалзах AllowOverride директивыг All болгоорой. Миний блогын хувьд дараах хэлбэртэй байна.

<Directory “/үндсэн зам/hujii”>
AllowOverride All
</Directory>

Одоо та Apache, PHP хэрхэн хамтран гайхимшигтай ажилладгийн шидийг үзэх болно. Үүний тулд та .htaccess файлдаа дараах текстийг бичнэ үү.

php_value zlib.output_compression 1
php_value zlib.output_compression_level 1

Энэ ямар учиртайг тайлбарлаваас, php_value гэдэг нь PHP.INI файл дэх тохиргоог өөрчилж байгааг илэрхийлж байна. zlib.output_compression нь PHP компайл хийгээд гарч буй текст контентийг GZIP-ээр шах гэдгийг илэрхийлж байна. Харин zlib.output_compression_level нь ямар түвшинд шахахыг илэрхийлж буй.

Зарим вэб хөтлөгч (тэгэхдээ маш цөөхөн) GZIP шахалттай агуулгыг задалж чаддаггүй. Тэгэхдээ та үүнд санаа зовох хэрэггүй. Учир нь PHP үр дүнгээ гаргахдаа вэб хөтлөгчөөс ирж буй хөтлөгчийг шалгаж үзээд шахах эсэхээ шийддэг. Тэгэхээр хэрвээ GZIP шахалт дэмждэггүй хөтлөгч бол байгаа чигээр нь агуулгыг дамжуулна гэсэн үг.

За та одоо тохиргоогоо хийчихсэн бол http://www.whatsmyip.org/mod_gzip_test/ хаягаар ороод таны вэб хуудсын хэмжээ хэрхэн багассаныг хараарай. Миний блогийн нүүр хуудас лав 85%-аар багасч хэмжээ нь 10K орчим болсон байна.

Вэб удах шалтгааны 3 дахь тохиолдолд серверийнхээ хүчин чадлыг нэмэх, кодынхоо чанарыг, баазынхаа бүтцийг сайжруулах хэрэгтэй болно. Мөн та төрөл бүрийн хэлбэрээр сервер дээрээ кэйш үүсгэж болно. Энэ талаар цаашид бас бичих болно. Banjig.Net-ийн хувьд сервер талдаа ихэнх хэсэг нь кэйштэй, мөн энд дурдсан аргыг хэрэглэдэг болно. Тиймээс ч хаанаас ч гэсэн тэгж их удаад байдаггүй байх.

За амжилт хүсье! Асуудал гарвал дуртайяа хариулах болно.

Эх сурвалжыг : http://www.phpmn.org/?q=node/5
http://www.dhtech.com/hujii/archives/13-GZIP.html

No comments yet

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: