O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk

So'nggi yillarda oldingi loyihalarni optimallashtirish uchun tobora ko'proq platformalar uchinchi tomon resurslarini o'z-o'zidan joylashtirish yoki proksi-server qilish imkoniyatlarini taklif qilmoqda. Akamai sozlash imkonini beradi maxsus parametrlar o'z-o'zidan yaratilgan URL manzillar uchun. Cloudflare Edge Workers texnologiyasiga ega. Fasterzine mumkin qayta yozish Sahifalardagi URL manzillar saytning asosiy domenida joylashgan uchinchi tomon resurslariga ishora qiladi.

O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk

Agar siz loyihangizda foydalaniladigan uchinchi tomon xizmatlari tez-tez o'zgarmasligini va ularni mijozlarga yetkazib berish jarayonini yaxshilash mumkinligini bilsangiz, ehtimol siz bunday xizmatlarni proksi-server qilish haqida o'ylayotgandirsiz. Ushbu yondashuv yordamida siz ushbu resurslarni foydalanuvchilarga yaqinlashtirishingiz va mijoz tomonidan ularning keshlashini to'liq nazorat qilishingiz mumkin. Bu, qo'shimcha ravishda, foydalanuvchilarni uchinchi tomon xizmatining "halokatga uchraganligi" yoki uning ishlashining pasayishi natijasida yuzaga keladigan muammolardan himoya qilish imkonini beradi.

Yaxshi: ishlash yaxshilandi

Birovning resurslarini o'z-o'zidan joylashtirish ishlashni juda aniq tarzda yaxshilaydi. Brauzer yana DNS-ga kirishi shart emas, u TCP ulanishini o'rnatishi va uchinchi tomon domenida TLS qo'l siqishini amalga oshirishi shart emas. Quyidagi ikkita raqamni taqqoslash orqali birovning resurslarini o'z-o'zidan joylashtirish ishlashga qanday ta'sir qilishini ko'rishingiz mumkin.

O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk
Uchinchi tomon resurslari tashqi manbalardan yuklab olinadi ( shu yerda)

O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk
Uchinchi tomon resurslari saytning qolgan materiallari bilan bir joyda saqlanadi ( shu yerda)

Vaziyat, shuningdek, brauzerning asosiy domen bilan allaqachon o'rnatilgan HTTP/2 ulanishidan ma'lumotlarni multiplekslash va ustuvorlik qilish qobiliyatidan foydalanishi bilan yaxshilanadi.

Agar siz uchinchi tomon resurslarini joylashtirmasangiz, ular asosiy domendan boshqa domendan yuklanganligi sababli ularga ustuvorlik berish mumkin emas. Bu ularning mijozning tarmoqli kengligi uchun bir-biri bilan raqobatlashishiga olib keladi. Bu ideal sharoitlarda erishish mumkin bo'lganidan ancha uzoqroq bo'lgan sahifani yaratish uchun muhim bo'lgan kontentni yuklash vaqtlariga olib kelishi mumkin. shu yerda Bularning barchasini juda yaxshi tushuntiradigan HTTP/2 ustuvorligi haqida gapiring.

Taxmin qilish mumkinki, tashqi manbalarga havolalarda atributlardan foydalanish preconnect muammoni hal qilishda yordam beradi. Biroq, agar turli domenlarga ushbu havolalar juda ko'p bo'lsa, u eng muhim daqiqada aloqa liniyasini haddan tashqari yuklashi mumkin.

Agar siz uchinchi tomon resurslarini o'zingiz joylashtirsangiz, ushbu resurslar mijozga qanday aniq berilishini nazorat qilishingiz mumkin. Ya'ni, biz quyidagilar haqida gapiramiz:

  • Har bir brauzerga eng mos keladigan ma'lumotlarni siqish algoritmidan foydalanilganligiga ishonch hosil qilishingiz mumkin (Brotli/gzip).
  • Siz odatda unchalik uzoq bo'lmagan resurslarni keshlash vaqtini, hatto eng taniqli provayderlarda ham oshirishingiz mumkin (masalan, GA yorlig'i uchun mos keladigan qiymat 30 daqiqaga o'rnatiladi).

Tegishli kontentni keshlash boshqaruv strategiyangizga (URL xeshlari, versiyalarni yaratish va h.k.) kiritish orqali siz hatto manba uchun TTLni, masalan, bir yilga uzaytira olasiz. Bu haqda quyida gaplashamiz.

▍Beshinchi tomon xizmatlarining ishlashidagi uzilishlardan yoki ularni o'chirishdan himoya qilish

Uchinchi tomon resurslarini o'z-o'zidan joylashtirishning yana bir qiziqarli jihati shundaki, u uchinchi tomon xizmatlarining uzilishi bilan bog'liq xavflarni kamaytirishga imkon beradi. Faraz qilaylik, siz foydalanayotgan uchinchi tomon A/B test yechimi sahifaning bosh qismida yuklanadigan blokirovka skripti sifatida amalga oshirilgan. Ushbu skript sekin yuklanadi. Agar tegishli skript yuklanmasa, sahifa bo'sh bo'ladi. Agar yuklash uchun juda uzoq vaqt kerak bo'lsa, sahifa uzoq kechikish bilan paydo bo'ladi. Yoki loyiha uchinchi tomon CDN resursidan yuklab olingan kutubxonadan foydalanadi deylik. Tasavvur qilaylik, ushbu resurs ishlamay qolgan yoki ma'lum bir mamlakatda bloklangan. Bunday holat sayt mantig'ining buzilishiga olib keladi.

Ba'zi tashqi xizmatlar mavjud bo'lmaganda saytingiz qanday ishlashini bilish uchun SPOF bo'limidan foydalanishingiz mumkin webpagetest.org.

O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk
webpagetest.org saytida SPOF bo'limi

▍Brauzerlarda materiallarni keshlash bilan bog'liq muammolar haqida nima deyish mumkin? (Maslahat: bu afsona)

Ommaviy CDN-lardan foydalanish avtomatik ravishda resurslarning yaxshi ishlashiga olib keladi deb o'ylashingiz mumkin, chunki bu xizmatlar juda yuqori sifatli tarmoqlarga ega va butun dunyo bo'ylab tarqatiladi. Lekin aslida hamma narsa biroz murakkabroq.

Aytaylik, bizda bir nechta turli saytlar mavjud: website1.com, website2.com, website3.com. Bu saytlarning barchasi jQuery kutubxonasidan foydalanadi. Biz ularni CDN yordamida ulaymiz, masalan - googleapis.com. Brauzerdan kutubxonani bir marta yuklab olib, keshlashini kutishingiz mumkin, keyin uni barcha uchta saytda ishlatishingiz mumkin. Bu tarmoqdagi yukni kamaytirishi mumkin. Ehtimol, bu sizga pulni biror joyda tejash imkonini beradi va resurslarning ishlashini yaxshilashga yordam beradi. Amaliy nuqtai nazardan, hamma narsa boshqacha ko'rinadi. Masalan, Safari deb nomlangan xususiyatga ega Aqlli kuzatishni oldini olish: Kesh hujjat manbasi va uchinchi tomon resursi manbasiga asoslangan ikkita kalitlardan foydalanadi. shu yerda bu mavzu bo'yicha yaxshi maqola.

eski tadqiqotlar Yahoo и Facebook, shuningdek, yaqinroq o'rganish Pol Kalvano, resurslar brauzer keshlarida biz kutgan vaqtgacha saqlanmasligini ko'rsatib beradi: “Loyihaning shaxsiy va uchinchi tomon resurslarini keshlash vaqti o'rtasida jiddiy tafovut mavjud. Biz CSS va veb shriftlari haqida gapiramiz. Ya'ni, mahalliy shriftlarning 95 foizi bir haftadan ko'proq keshga ega, uchinchi tomon shriftlarining 50 foizi esa bir haftadan kamroq keshga ega! Bu veb-ishlab chiquvchilarga shrift fayllarini o'zlari joylashtirish uchun jiddiy sabab beradi!"

Natijada, agar siz boshqa odamlarning kontentini joylashtirsangiz, brauzerni keshlash natijasida yuzaga kelgan unumdorlik muammolarini sezmaysiz.

Endi biz uchinchi tomon o'z-o'zini xostingining kuchli tomonlarini ko'rib chiqdik, keling, ushbu yondashuvning yaxshi amalga oshirilishini yomondan qanday ajratish haqida gaplashaylik.

Yomon: shayton tafsilotlarda

Uchinchi tomon resurslarini o'z domeningizga ko'chirish, bunday resurslar to'g'ri keshlanganligiga ishonch hosil qilmasdan avtomatik ravishda amalga oshirilmaydi.

Bu erda asosiy muammolardan biri keshlash vaqti. Masalan, versiya ma'lumotlari quyidagi kabi uchinchi tomon skript nomlariga kiritilgan: jquery-3.4.1.js. Bunday fayl kelajakda o'zgarmaydi va natijada bu uning keshlashida hech qanday muammo tug'dirmaydi.

Ammo fayllar bilan ishlashda ba'zi versiyalar sxemasi ishlatilmasa, fayl nomi o'zgarmagan holda mazmuni o'zgarib turadigan keshlangan skriptlar eskirib qolishi mumkin. Bu jiddiy muammo bo'lishi mumkin, chunki u, masalan, mijozlar imkon qadar tezroq olishlari kerak bo'lgan skriptlarga avtomatlashtirilgan xavfsizlik yamoqlarini qo'shishga ruxsat bermaydi. Ishlab chiquvchi bunday skriptlarni keshda yangilash uchun harakat qilishi kerak. Bunga qo'shimcha ravishda, bu mijozda keshdan foydalaniladigan kod loyihaning server qismi ishlab chiqilgan kodning eng so'nggi versiyasidan farq qilishi sababli dasturning nosozliklariga olib kelishi mumkin.

To'g'ri, agar biz tez-tez yangilanadigan materiallar (teg menejerlari, A / B testlari uchun echimlar) haqida gapiradigan bo'lsak, unda CDN vositalari yordamida ularni keshlash hal qilinishi mumkin bo'lgan vazifadir, lekin ancha murakkabroq. Teglarni boshqarish yechimi bo'lgan Commanders Act kabi xizmatlar yangi versiyalarni nashr qilishda veb-huklardan foydalanadi. Bu sizga CDN-da keshni tozalashni majburlash qobiliyatini yoki yaxshiroq, xesh yoki URL yangilanishini majburlash qobiliyatini beradi.

▍Materiallarni mijozlarga moslashtirilgan holda yetkazib berish

Bundan tashqari, keshlash haqida gapirganda, CDN-da ishlatiladigan keshlash sozlamalari ba'zi uchinchi tomon resurslari uchun mos kelmasligi mumkinligini hisobga olishimiz kerak. Misol uchun, bunday manbalar foydalanuvchi agenti sniffing (moslashuvchan xizmat ko'rsatish) texnologiyasidan maxsus brauzerlarga ushbu brauzerlar uchun optimallashtirilgan kontent versiyalari bilan xizmat ko'rsatish uchun foydalanishi mumkin. Ushbu texnologiyalar brauzer imkoniyatlarini aniqlash uchun muntazam ifodalarga yoki HTTP sarlavhasi ma'lumotlar bazasiga tayanadi. User-Agent. Qaysi brauzer bilan shug'ullanayotganini bilgandan so'ng, ular unga buning uchun mo'ljallangan materiallarni berishadi.

Bu erda siz ikkita xizmatni eslab qolishingiz mumkin. Birinchisi - googlefonts.com. Ikkinchisi - polyfill.io. Google Fonts xizmati ma'lum bir manba uchun brauzerning imkoniyatlariga qarab turli xil CSS kodlarini taqdim etadi (woff2 resurslariga havolalar yordamida unicode-range).

Bu yerda turli brauzerlardan qilingan bir nechta Google Shrift so‘rovlari natijalari keltirilgan.

O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk
Chrome brauzeridan Google Fonts so'rovi natijasi

O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk
IE10 dan bajarilgan Google Fonts so'rovi natijasi

Polyfill.io brauzerga faqat kerakli polifilllarni beradi. Bu ishlash sabablari uchun amalga oshiriladi.

Misol uchun, keling, agar siz turli xil brauzerlardan quyidagi so'rovni bajarsangiz nima bo'lishini ko'rib chiqamiz: https://polyfill.io/v3/polyfill.js?features=default

IE10 dan bajarilgan bunday so'rovga javoban 34 KB ma'lumot olinadi. Va unga Chrome'dan bajarilgan javob bo'sh bo'ladi.

G'azablangan: Maxfiylikka oid ba'zi fikrlar

Bu nuqta oxirgi, lekin muhim emas. Gap shundaki, loyihaning asosiy domenida yoki uning subdomenida uchinchi tomon resurslarini o'z-o'zidan joylashtirish foydalanuvchilarning maxfiyligini xavf ostiga qo'yishi va asosiy veb-loyihaga salbiy ta'sir ko'rsatishi mumkin.

Agar CDN tizimi to'g'ri sozlanmagan bo'lsa, siz domeningizning cookie fayllarini uchinchi tomon xizmatiga yuborishingiz mumkin. Agar CDN darajasida to'g'ri filtrlash tashkil etilmagan bo'lsa, seans cookie-fayllaringiz odatda JavaScript-da ishlatilmaydi. httponly), xorijiy xostga yuborilishi mumkin.

Eulerian yoki Criteo kabi trekerlar bilan aynan shunday bo'lishi mumkin. Uchinchi tomon kuzatuvchilari cookie faylida noyob identifikator o'rnatgan bo'lishi mumkin. Agar ular sayt materiallarining bir qismi bo'lsa, foydalanuvchi turli veb-resurslar bilan ishlayotgan paytda identifikatorni o'z xohishiga ko'ra o'qishi mumkin edi.

Hozirgi kunda ko'pchilik brauzerlar ushbu turdagi kuzatuvchi xatti-harakatlaridan himoyani o'z ichiga oladi. Natijada, endi trekerlar texnologiyadan foydalanmoqda CNAME Cloaking, turli loyihalar uchun o'z skriptlarini niqoblash. Aniqrog'i, trekerlar sayt egalariga ma'lum bir domen sozlamalariga CNAME qo'shishni taklif qilishadi, uning manzili odatda tasodifiy belgilar to'plamiga o'xshaydi.

Veb-sayt cookie-fayllarini barcha subdomenlar uchun (masalan - *.website.com) mavjud qilish tavsiya etilmasa ham, ko'p saytlar buni qiladi. Bunday holda, bunday cookie-fayllar avtomatik ravishda yashirin uchinchi tomon kuzatuvchisiga yuboriladi. Natijada, biz endi hech qanday shaxsiy hayot haqida gapira olmaymiz.

Bundan tashqari, xuddi shu narsa HTTP sarlavhalari bilan sodir bo'ladi Mijoz - Maslahatlar, ular faqat asosiy domenga yuboriladi, chunki ular yaratish uchun ishlatilishi mumkin raqamli barmoq izi foydalanuvchi. Siz foydalanadigan CDN xizmati ushbu sarlavhalarni to'g'ri filtrlashiga ishonch hosil qiling.

natijalar

Agar siz yaqinda uchinchi tomon resurslarini o'z-o'zini joylashtirishni amalga oshirishni rejalashtirmoqchi bo'lsangiz, sizga bir nechta maslahat beraman:

  • Eng muhim JS kutubxonalaringizni, shriftlaringizni va CSS fayllaringizni joylashtiring. Bu uchinchi tomon xizmatining aybi tufayli sayt uchun muhim bo'lgan resurs mavjud bo'lmasligi sababli saytning ishlamay qolishi yoki unumdorligining pasayishi xavfini kamaytiradi.
  • CDN-da uchinchi tomon resurslarini keshlashdan oldin, ularning fayllarini nomlashda qandaydir versiyalash tizimidan foydalanilganligiga ishonch hosil qiling yoki ushbu resurslarning yangi versiyasini nashr qilishda CDN keshini qo'lda yoki avtomatik ravishda qayta o'rnatish orqali ushbu resurslarning hayot aylanishini boshqarishingiz mumkin. skript.
  • CDN, proksi-server va kesh sozlamalariga juda ehtiyot bo'ling. Bu sizning loyihangiz yoki sarlavhalaringizni cookie-fayllar yuborilishining oldini olishga imkon beradi Client-Hints uchinchi tomon xizmatlari.

Hurmatli o'quvchilar! Loyihalaringizning ishlashi uchun juda muhim bo'lgan boshqa odamlarning materiallarini serverlaringizga joylashtirasizmi?

O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk
O'z-o'zidan uchinchi tomon resurslari: yaxshi, yomon, xunuk

Manba: www.habr.com

a Izoh qo'shish