Squid ကနေ ဒေါင်းလုဒ်ဆက်လုပ်ခြင်း
ဆက်မလုပ်ခင် Range တုံ့ပြန်ချက်နဲ့ အရာဝတ္ထုတူညီမှုကို စစ်ပါ။ Squid ရဲ့ ကြိုယူမှုမူဝါဒကို အခြေခံ Range ပံ့ပိုးမှုနဲ့ ခွဲပါ။
download.part က အခုတောင်းမယ့် အရာဝတ္ထုရဲ့ တူညီတဲ့ကိုယ်စားပြုပုံနဲ့ သက်ဆိုင်မှ ဒေါင်းလုဒ်ဆက်ပါ။ ဖိုင်နာမည်တစ်ခုတည်းက မသက်သေပြပါ။ မူလဆာဗာက ပထမအကြိမ်ပြီးနောက် အကြောင်းအရာပြောင်းထားနိုင်ပါတယ်။
curl --proxy http://proxy.example:3128 --noproxy '' --connect-timeout 5 --max-time 60 -C - --output download.part http://files.example/test.binချိတ်ဆက်အမှတ်နှစ်ခုလုံးကို သင်သုံးခွင့်ရှိတဲ့ ဝန်ဆောင်မှုနဲ့ အစားထိုးပါ။ အများသုံးပရောက်စီ ခွင့်ပြုတဲ့နေရာမှာ အများမြင်ဖိုင်နှိုင်းယှဉ်ဖို့ HTTP ပရောက်စီစာရင်းက HTTP ချိတ်ဆက်အမှတ် ရွေးပါ။ -C - က ရှိပြီးသားဖိုင်အရွယ်အစားကို ဆက်ယူမယ့်နေရာအဖြစ် သုံးပါတယ်။ ပြန်လာတဲ့ body မှန်သမျှကို လိုနေတဲ့ byte တွေလို့ မယူဆဘဲ ဦးတည်ရာရဲ့ တုံ့ပြန်ချက်ကို စစ်ပါ။
| တုံ့ပြန်ချက် | အဓိပ္ပာယ် |
|---|---|
| Content-Range ပါသော 206 | ပြန်လာတဲ့အပိုင်းက မျှော်လင့်ထားတဲ့ နောက်အပိုင်းလား စစ်ပါ။ |
| 200 | ဆာဗာက Range ကို လျစ်လျူရှုပြီး ကိုယ်စားပြုပုံတစ်ခုလုံး ပို့ထားနိုင်ပါတယ်။ |
| 416 | တောင်းထားတဲ့အပိုင်းကို မပေးနိုင်ပါ။ အမှားစာမျက်နှာကို ဖိုင်နောက်မှာ မပေါင်းပါနဲ့။ |
Validator တွေနဲ့ If-Range က ပြောင်းနေတဲ့ resource ရဲ့ မတူတဲ့ဗားရှင်းတွေကို ပေါင်းမိတာ ရှောင်ဖို့ ကူညီပါတယ်။ ပြီးစီးတဲ့ဖိုင်ကို မယုံကြည်ခင် အက်ပ်ရဲ့ ကိုယ်စားပြုပုံစည်းမျဉ်းတွေကို လိုက်နာပါ။
Squid 6.13 ရဲ့ range_offset_limit က cache အတွက် အရာဝတ္ထုကို ဘယ်အချိန် အစကနေယူမလဲဆိုတာ ထိန်းတာပါ။ client က အပိုင်းတောင်းခွင့်ရှိမရှိကို ထိန်းတာ မဟုတ်ပါ။
range_offset_limit 0ကန့်သတ်ချက်သုညက cache ဖြည့်ဖို့သက်သက် အစပိုင်းကို ပိုယူတာ ရှောင်ပေးပါတယ်။ အရာဝတ္ထုကို cache မလုပ်ဘဲ အသုံးဝင်တဲ့အပိုင်း ပို့ပေးတာလည်း အောင်မြင်နိုင်ပါတယ်။ သာမန် HTTPS CONNECT မှာ Range အပြန်အလှန်က ဦးတည်ရာ TLS အတွင်းမှာ ရှိပါတယ်။ အဲဒီတုံ့ပြန်ချက်ကို ဖတ်ပါ။ Squid မြင်ရတဲ့ object cache မူဝါဒက အတွင်းတောင်းဆိုမှုကို ထိန်းတယ်လို့ မယူဆပါနဲ့။