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
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.
Uchinchi tomon resurslari tashqi manbalardan yuklab olinadi (
Uchinchi tomon resurslari saytning qolgan materiallari bilan bir joyda saqlanadi (
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.
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 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
eski tadqiqotlar
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.
Chrome brauzeridan Google Fonts so'rovi natijasi
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:
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
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
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?
Manba: www.habr.com