Gzipping (Compressing) Components of the Web Pages - အင်တာနက်စာမျက်နှာများ၏ အစိတ်အပိုင်းများကို ဖိသိပ်ပေးပို့ခြင်း

အဓိက အကြောင်းအရာ - Server

ကွန်ရက်တစ်ခု အတွင်းရှိ HTTP request တစ်ခုအတွက် ၀က်ဘ်ဆာဗာမှာ တုံ့ပြန်ပေးပို့ရန် ကြာမြင့်ချိန်ကို ထို၀က်ဘ်ဆိုက်၏ Front-end အင်ဂျင်နီယာများကြောင့် သိသာထင်ရှားစွာ လျော့ကျစေနိုင်သည်။ ၀က်ဘ်ဆိုက် တည်ဆောက်သူ အင်ဂျင်နီယာ အဖွဲ့အနေဖြင့် အင်တာနက် အသုံးပြုသူတစ်ဦး၏ - Bandwidth အမြန်နှုံး၊ အင်တာနက် ၀န်ဆောင်မှုပေးသူ (ISP - Internet service provider)၊ ဆာဗာနှင့် အနီးအပေး ကွာခြားချက်.. စသည့် အချက်များကို ထိန်းချုပ်ရန် မဖြစ်နိုင်ပေ။ သို့သော်လည်း ဆောင်ရွက်နိုင်သည့် အခြားသော နည်းလမ်းတစ်ခုမှာ - ဆာဗာမှ ပြန်လည်ပေးပို့သည့် HTTP response ၏ အရွယ်အစားကို လျော့ချပေးနိုင်ရန် အတွက် - ဖိသိပ်မှု (Compression) ကို အသုံးပြုခြင်း ဖြစ်သည်။

HTTP/1.1 မှ စတင်ကာ web client (အင်တာနက်ကြည့် ဆော့ဖ်ပဲ အပါအ၀င်) ဆော့ဖ်ပဲများသည် ၄င်းတို့၏ HTTP request များထဲတွင် Accept-Encoding header ကိုထည့်သွင်းကာ ဖိသိပ်ပေးပို့ခြင်းကို လက်ခံဆောင်ရွက်ပေးနိုင်ကြောင်း ဖော်ပြလာနိုင်သည်။

ဥပမာ -    Accept-Encoding: gzip, deflate

အကယ်၍ ၀က်ဘ်ဆာဗာ (Web Server) တစ်ခုသည် လက်ခံရရှိသည့် တောင်းဆိုမှုတစ်ခုတွင် အထက်ပါအတိုင်း Header ကို မြင်တွေ့ရပါက၊ ထိုဖော်ပြချက်အတွင်း ပါရှိသည့် နည်းလမ်းတစ်ခုခု (ဤဥပမာတွင် gzip နှင့် deflate) ကို အသုံးပြုပြီး ပြန်လည်ပေးပို့ရမည့် လုပ်ဆောင်ချက်များကို ဖိသိပ်မှု ပြုလုပ်သည်။ ထို့နောက် ၀က်ဘ်ဆာဗာသည် တောင်းဆိုလာသည့် တုန့်ပြန်ပေးပို့မှုများတွင် Content-Encoding header ကို ထည့်သွင်းကာ web client ကို သတိပေးသည်။

 

ဥပမာ -    Content-Encoding: gzip

လက်ရှိအခြေအနေတွင် ဖိသိပ်ပေးပို့မှုများ လုပ်ဆောင်ရာတွင် အထိရောက်ဆုံးနှင့် လူသိအများဆုံးမှာ Gzip ဖြစ်သည်။ Gzip ကို GNU project မှ စတင်ခဲ့ပြီး RFC 1952 ဖြင့် စံသတ်မှတ်ပေးခဲ့သည်။ နောက်ထပ် တစ်ခုတည်းသော အခြား ဖိသိပ်ပေးပို့နည်းစနစ်မှာ Deflate ဖြစ်ပြီး ထိရောက်မှု နဲသည့်အပြင် လူသိလည်း သိပ်မများလှပေ။

ယေဘုယျအားဖြင့် Gzip ပြုလုပ်ပေးပို့ခြင်း (Gzipping) သည် ဆာဗာမှတုန့်ပြန်ရသည့် အရွယ်အစားကို ၇၀% ခန့်မျှ လျော့ကျစေနိုင်သည်။ ယနေ့အင်တာနက်ကြည့် ဆော့ဖ်၀ဲများအားလုံးနီးပါးသည် Gzip ကို အထောက်အပံ့ပေးနိုင်ကြသည်။ Apache ဆာဗာကို အသုံးပြုပါက gzip ကို configure လုပ်ပေးရသည့် မော်ဂျုး (Module) များခြားနားမှု ရှိကြသည်။ Apache 1.3 တွင် mod_gzip ကို အသုံးပြုပြီး Apache 2.x တွင် mod_deflate ကို အသုံးပြုသည်။

တခါတရံတွင် အင်တာနက်ကြည့်ဆော့ဖ်ပဲ ဗားရှင်းအဟောင်းများတွင် ဆာဗာမှတုန့်ပြန် ပေးပို့သည့် ဖိသိပ်ထားသည့် အချက်အလက်များကို လက်မခံနိုင်သည့် ပြဿနာမျိုး ကြုံတွေ့ကြရသည်။ Apache ဆာဗာများရှိ မော်ဂျုးများသည် ထိုပြဿနာမျိုးကို ကြုံတွေ့ရသည်နှင့် တုန့်ပြန်ရမည့် Header များကို အလိုအလျောက် ပြောင်းလဲပေးပို့ နိုင်စွမ်း ရှိကြသည်။

ဆာဗာများသည် gzip ပြုလုပ်သည့် အခါ ဖိုင်အမျိုးအစားကို အခြေခံကာ ရွေးချယ်ကြသည်။ သို့သော် ထိုရွေးချယ်မှုမှာ ကန့်သတ်ချက် များရှိနေသည်။ ၀က်ဘ်ဆိုက် အများစုသည် ၄င်းတို့၏ HTML ဖိုင်များကိုသာလျှင် gzip ပြုလုပ်လေ့ ရှိကြသည်။ ကျွန်တော်တို့၏ JavaScripts ဖိုင်များနှင့် CSS Stylesheets များကိုလည်း gzip ပြုလုပ်ပေးပို့နိုင်ပါက ပိုမို တန်ဘိုးရှိမည် ဖြစ်သော်လည်း၊ ၀က်ဘ်ဆိုက် အတော်များများသည် ဤအခွင့်အလမ်းကို လက်လွှတ်ဆုံးရှုံးလျက် ရှိကြသည်။ အမှန်တကယ်အားဖြင့် XML နှင့် JSON အပါအ၀င် မည်သည့် Text response များကိုမဆို ဖိသိပ်ပေးပို့ နိုင်လျှင် အကောင်းဆုံးဖြစ်သည်။ ပုံများနှင့် PDF ဖိုင်များမှာ ဖိသိပ်ထားပြီးဖိုင်များ ဖြစ်သည့်အတွက် gzip မလုပ်သင့်ပေ။ အကယ်၍ ထိုဖိုင်များကို ထပ်မံဖိသိပ်ရန် ကြိုးစားပါက CPU ကို အလွန်အလုပ်ရှုပ်စေပြီး ဖိုင်အရွယ်အစားများ ကိုလည်း ပိုမို ကြီးမားလာစေသည်။

အင်တာနက်တစ်လျောက် ပေးပို့မည့် ဖိုင်များကို တတ်နိုင်သမျှ များများ Gzip ပြုလုပ်ပေးပို့ခြင်းဖြင့် အင်တာနက်စာမျက်နှာများ၏ အလေးချိန်ကို လျော့ကျစေနိုင်ပြီး ၀က်ဘ်ဆိုက်သို့ လာရောက်သူများကို လျင်မြန်စွာ တုန့်ပြန်နိုင်မည် ဖြစ်သည်။

REF: http://developer.yahoo.com/performance/rules.html#gzip

Add new comment

Featured Articles