
Cloudflare-მა Cache Rules-ში Vary-ს მხარდაჭერა დაამატა
Cloudflare-მა Cache Rules-ში Vary-ს მხარდაჭერა დაამატა — ფუნქცია ყველა პაკეტშია, უფასოს ჩათვლით. წყარო აცხადებს, რომელი request-ველები ცვლის პასუხს, ოპერატორი კი წყვეტს, Cloudflare მნიშვნელობას ნორმალიზებას მოახდენს, უცვლელად გაატარებს თუ ქეშს გამოტოვებს.
Cloudflare-მა Cache Rules-ში HTTP-ის Vary პასუხის ჰედერის მხარდაჭერა დაამატა; ფუნქცია ყველა პაკეტშია ხელმისაწვდომი, უფასოს ჩათვლით. კომპანიის ბლოგპოსტი Vary-ს „HTTP-ის უშნო ნაწილს“ უწოდებს — ფრაზა Mark Nottingham-ის ტექსტიდან მოდის.
ჰედერი იმიტომ არსებობს, რომ ერთ URL-ს რამდენიმე სწორი პასუხი შეიძლება ჰქონდეს: სერვერი სხვადასხვა კლიენტს სხვადასხვა ენას, სურათის ფორმატს ან შეკუმშვის სქემას უგზავნის. Vary-ს უგულებელყოფილმა ქეშმა შეიძლება API-კლიენტს HTML, ბრაუზერს კი JSON მიაწოდოს, ხოლო ყოველი ნედლი მნიშვნელობის ცალ-ცალკე აღქმა ერთ გამოსაყენებელ პასუხს ათასობით თითქმის იდენტურ ვარიანტად ფანტავს.

რას არ ამბობს Vary
Vary ქეშს ეუბნება, რომელი request-ველები შეიძლება აისახოს პასუხზე, მაგრამ არ ამბობს, რას წარმოადგენს პასუხი. Cloudflare-ის მაგალითში წყარო ინგლისურ, ფრანგულ და გერმანულ ენებზე მუშაობს, ორი კლიენტი კი Accept-Language: en-US, fr და Accept-Language: fr, en-GB მნიშვნელობებს აგზავნის. ორივეს ინგლისური ურჩევნია და შეიძლება ერთი და იგივე ბაიტები მიიღოს, თუმცა ნედლ მნიშვნელობებს შედარებული ქეში მათ ცალკეულ ვარიანტებად ინახავს.
პრობლემა ველების რაოდენობასთან ერთად მრავლდება: ერთ ველში ათი მნიშვნელობა ათ ვარიანტს ნიშნავს, სამ ველში ათი მნიშვნელობა კი ათას კომბინაციას. თითქმის 50 000 პოპულარული საიტის 120 მილიონზე მეტი პასუხის ანალიზმა აჩვენა, რომ დაახლოებით 3 000 მათგანი ოთხ ან მეტ ველზე იყო დამოკიდებული — ზოგი 10, 23 ან თუნდაც 47 ველზე.
სამი ქმედება: normalize, passthrough, bypass
ახალ მოდელში წყარო კვლავ Vary-ით აცხადებს ჰედერებს, Cache Rule კი წყვეტს, თითოეულს როგორ მოეპყრას Cloudflare. normalize — რეკომენდებული ვარიანტი — Accept-ის, Accept-Language-ისა და Accept-Encoding-ის მნიშვნელობებს ქეშთან შედარებამდე ამუშავებს: აპატარავებს ასოებს და quality-მნიშვნელობით ალაგებს, რომ ეკვივალენტური მოთხოვნები ერთ პასუხს იზიარებდეს. passthrough ნედლ ბაიტებს ინახავს — ასოების რეგისტრს, გამოტოვებებს, თანმიმდევრობასა და დუბლიკატებს — და ჰედერებისთვისაა, რომელთა ზუსტი მნიშვნელობაც ცვლის პასუხს. bypass კი პასუხს არ ინახავს, თუ წყარო ამ ჰედერს Vary-ში ასახელებს; ის Cookie-ს, User-Agent-სა და სხვა პერსონალიზებულ ველებს ეხება. Vary: * ყოველთვის გვერდს უვლის ქეშს.
კონფიგურაცია და დეტალები
Vary-ს პარამეტრები Cache Rules-შია (დაშბორდზე — Caching > Cache Rules) და ასევე ხელმისაწვდომია Rulesets API-ით http_request_cache_settings ფაზაში და Terraform-ით. Cloudflare აღნიშნავს, რომ პასუხისმგებლობა წყაროს რჩება: ყველა ქეშირებადი პასუხი, რომელიც request-ველების მიხედვით იცვლება, თანმიმდევრულად უნდა აბრუნებდეს სწორ Vary-ს, შეცდომების ჩათვლით. წესის შეცვლა არსებულ ჩანაწერებს ავტომატურად არ შლის: ძველი ვარიანტები ვადის გასვლამდე ან გასუფთავებამდე რჩება, ხოლო რესურსის გასუფთავება ყველა Vary-ვარიანტს მოიცავს.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.