Cookie-lar: brauzeringizning shirin tarixi
Brauzeringizning Shirin Xotirasi: Cookie-larning Qiziqarli Tarixi
Tasavvur qiling: bir kuni nonvoyxona oldidasiz. Bir developer ichkariga kiradi va vitrindagi shokoladli pechenyelarni ko'rganda so'raydi: "Bular session saqlay oladimi?"
Yo'q, u shirinliklarni iste'mol qilish haqida o'ylamayapti. U haqiqatan ham pechenyelar brauzerdagi session kabi ishlay olmasligini tushunmayapti.
Lekin bu qiziqarli voqea tasodif emas. Bu internetning xotira qanday o'rganganini hikoyasi.
Internet Unutgan Davrlar
Ko'pchilik buni o'ylab ko'rmaydi: siz har bir havolani bosganda yoki forma yuborganda, brauzeringiz serverga butunlay yangi so'rov yuboradi. Serverda u soniya oldin nima qilganingizni eslab qolish imkoniyati yo'q. U sizning tizimga kirganingizni, savatga mahsulot qo'shganingizni yoki til tanlaganingizni bilmaydi.
Bu xatolik emas — bu HTTPning stateless (statsiz) arxitekturasining o'zi. Har bir so'rov o'ziga kerakli barcha ma'lumotlarni olib yurishi shart. Server sizni u soniya oldin "Savatga qo'shish" tugmasini bosgan odam deb tanimaydi. Server uchun oldingi va hozirgi so'rov — butunlay begona odamlar.
Soddacha statik saytlar uchun bu yetarli edi. Lekin zamonaviy internet ko'proqni xohlardi: savatlar, shaxsiylashtirilgan dashboardlar, doimiy tizimga kirishlar. Va internetning bu "amneziyasi" katta muammoga aylandi.
State: Internetga Kerakli Xotira
State — bu o'tmishdagi harakatlardan kelib chiqqan va keyingi harakatlarga ta'sir qiluvchi ma'lumot. Siz klaviaturani savatga qo'shdingizmi? Demak, state o'zgardi — endi savatda klaviatura bor. Checkout sahifasida server shu state-ni o'qib, narxga klaviaturani qo'shadi.
State istalgan joyda saqlanishi mumkin — xotirada, bazada yoki brauzerda. Asosiy savol: uni qayerda saqlash emas, balki alohida so'rovlarni qanday qilib bir butun tajribaga bog'lash.
Session-lar: Davomiylik Yaratish
Session — bu bir-biridan ajratilgan HTTP so'rovlarini bitta uzluksiz oqimga bog'laydigan mantiqiy konteyner. Uni har bir sahifa tashrifini bog'lab turuvchi syujet liniyasi deb tasavvur qiling. Session tizimga kirishdan chiqishgacha davom etishi mumkin, yoki akkauntsiz xarid qilish sayohati bo'lishi mumkin.
Muhim jihat: HTTP session-larni avtomatik yaratmaydi. Sizning ilovangiz qachon session boshlanishini, unda nima bo'lishini va qachon tugashini hal qiladi. Bir foydalanuvchi beshta turli tabda active sessionga ega bo'lishi mumkin — va bu normal.
Kimning Session-i?
Mana shu yerda ishlar murakkablashadi. Server millionlab active session-larni boshqaradi. Yangi so'rov kelganda, server eng muhim savolni berishi kerak: "Bu kimning session-i?"
Shu yerda session identifier (identifikator) paydo bo'ladi — sizning session-ingizni boshqalardan ajratib turadigan noyob belgi. Uning ma'noli yoki real shaxsga bog'liq bo'lishi shart emas. U tasodifiy satr bo'lishi mumkin: 7f41c0a9 yoki session_88293847. Muhimi shundaki, server ushbu belgi yordamida to'g'ri session ma'lumotlarini olishi mumkin.
Identifikator o'zi ma'lumot emas — u qidiruv kaliti. Server "menga 7f41c0a9 ostida saqlangan session ma'lumotlarini ber" deydi, va shunday qilib sizning savatingiz qayta paydo bo'ladi.
Cookie-lar: Yetkazib Berish Mexanizmi
Endi oxirgi jumboq: ushbu identifikator har bir so'rov bilan qanday sayohat qiladi?
Server o'ziga tayanmaydi — har bir so'rov boshqa server instanceiga tushishi mumkin. Brauzer identifikatorni saqlab, har bir so'rov bilan avtomatik ravishda qaytarishi kerak.
Va cookie-lar aynan shuni qiladi. Server brauzerga kichik bir ma'lumot parchasini yuboradi — odatda faqat name-value juftligi. Brauzer uni saqlaydi va har bir keyingi so'rovda sidir-o'z qaytaradi. Cookie-lar internetning xotira mexanizmiga aylandi.
Nega "Cookie" Deyiladi?
Mana bu yerda этимология мураккаб. Bu atama ehtimol "magic cookie" dan kelib chiqqan — Unix dunyosida dasturlar orasida uzatiladigan token yoki qiymat tushunchasi. Netscape'dagi bir developer haqiqatan och qolganida yoki Unix hazilini qadrlaganida bu nomni tanlaganmi — bu tarixda noma'lum.
Biz biladigan narsa shuki, ular shunday nom tanladilarki, har bir junior developer birinchi qidiruvida pechenye rasmlarini ko'radi, hujjatlar o'rniga. Balki bu dasturchilar hazili, balki ular "shokoladli cookie retsepti" so'rovingizning hajmini hisobga olishmagan.
Har holda, keyingi marta saytda "cookie-larni qabul qilish" tugmasini ko'rganda, bilasizki: siz faqat browsing-ingizni kuzatishga rozilik bermayapsiz — siz statsiz internetni sizni haqiqatan eslab qoladigan narsaga aylantirgan aqlli yechimda ishtirok etayapsiz.
NameOcean'da biz startup-lar va developer-larga domain ro'yxatdan o'tkazishdan hostinggacha web mavjudlik qurishda yordam beramiz. Chunki ba'zida cookie-larni tushunish yetarli emas — ularni ishga soladigan infratuzilma kerak.