რამდენიმე გვერდიანი საიტის პრობლემები
დავუშვათ, გვაქვს ონლაინ მაღაზია. მომხმარებელი შემოვიდა, რაღაც პროდუქტი დაამატა cart-ში, დახურა ფანჯარა და ორი დღის შემდეგ გადაწყვიტა დაესრულებინა შეკვეთა.
რა გვჭირდება იმისთვის, რომ თავიდან შემოსვლისას მანამდე შენახული ნივთები cart-ში დახვდეს?
პირველ რიგში ალბათ ის მოგვაფიქრდება, რომ ნივთის დამატებისას სერვერზე ამ მომხმარებლის მონაცემებში შევინახოთ. მაგრამ რა ხდება, თუ იგი რეგისტრირებული არ არის? ასევე, როგორც წესი, ავტორიზაციის გვერდი განსხვავდება პროდუქტების გვერდისგან, საიდან ვიცით, ვინ გაიარა ავტორიზაცია?
ამ დროს გავრცელებული პრაქტიკაა საიტის ყველა ახალი ვიზიტორისთვის უნიკალური id-ის მინიჭება და ბრაუზერის ლოკალურ მეხსიერებაში შენახვა. ამის შემდეგ, შეგვიძლია მის შესახებ ინფორმაცია ერთად იყოს მოგროვებული. ანუ, ალგორითმი დაახლოებით ასე გამოიყურება
პროდუქტის cart-ში დამატებისას
- თუ მომხმარებელი ავტორიზირებულია, შევინახოთ შერჩეული პროდუქტი მის ბაზაში სერვერზე. მომხმარებლის ავტორიზაციის შემდეგ სესიის ინფორმაცია ინახება როგორც ბრაუზერში, ასევე სერვერზე
- თუ რეგისტრირებული არ არის
- თუ ლოკალურ მეხსიერებაში უკვე არის tracking id, შევინახოთ ბაზაში ამ id-ის cart-ში
- თუ არ არის, შევქმნათ ახალი და შევინახოთ
- თუ მომხმარებელმა ჯერ ავტორიზაციის გარეშე გამოიყენა საიტი და შემდეგ გაიარა ავტორიზაცია ან დარეგისტრირდა, მანამდე ლოკალურ მეხსიერებაში შენახული ინფორმაცია გაერთიანდება მის ახალ პროფილთან.
გამეორება: localStorage
localStorage არის ბრაუზერის მიერ მოწოდებული ობიექტი, რომელიც საიტს საშუალებას აძლევს მცირე პერსისტენტული მეხსიერება ქონდეს ინფორმაციის შესანახად. ეს საჭიროა იმის გამო, რომ საიტებს არ აქვთ წვდომა სტუმრის ფაილ სისტემაზე.
let name = 'Ann'
localStorage.setItem('customerName', name)
localStorage.getItem('customerName') // დააბრუნებს Ann-ს
როგორ მუშაობს რეკლამები
localStorage-ის უსაფრთხოება
სხვადასხვა საიტებმა ერთმანეთის ინფორმაცია რომ არ წაიკითხონ, localStorage-ის გაზიარებაზე შეზღუდვებია.
- localStorage-ზე წვდომა აქვთ მხოლოდ კონკრეტული საიტის html ფაილებში ჩასმულ ჯავასკრიპტის ფაილებს.
- სხვადასხვა html ფაილების ერთი საიტისთვის მიკუთვნება განისაზღვრება საერთო hostname ანუ მისამართით. google.com და google.com/docs ერთი localStorage აქვთ ბრაუზერში.
შეგიძლია მოიფიქრო შემთხვევა, როდესაც
third party scripts
თითქმის ყველა საიტი იყენებს სხვადასხვა ბიბლიოთეკებს:
- საიტის ფუნქციონალისთვის (მაგალითად, ანიმაციებისთვის)
- სერვისებისთვის
- ანალიტიკა
- რეკლამების ჩვენება
ანალიტიკის და რეკლამების შემთხვევაში, პროცესი ასეთია
- რეგისტრირდები პროვაიდერის საიტზე (google ads, facebook ads)
- ამის შემდეგ გაძლევენ javascript ლინკს და id-ს, რომელიც ფაილში მოწოდებულ ფუნქციას უნდა გადააწოდო. ყველაფერი სხვა ავტომატურად ხდება
- ბიბლიოთეკის ფაილში მომხმარებლის ინფორმაციის მოგროვება და google/facebook-ისთვის გაგზავნა
- მისთვის ყველაზე შესაფერისი რეკლამის მოძებნა და საიტზე ჩვენება (საიტის მიერ გამოყოფილ div-ებში)
- რეკლამის ნახვისთვის გადასახდელი თანხის დამატება საიტის ანგარიშზე
ad blockers
ეს პროგრამები რეკლამების დასამალად ამ ხერხებს მიმართავენ:
- DOM-დან შლიან ელემენტებს, რომლებიც გამოყოფილი არის ხოლმე რეკლამის საჩვენებლად
- ბლოკავენ სკრიპტების ცნობილ მისამართებს (javascript ფაილი სადაც არის ატვირთული)
GDPR
- მოხმარებელს უნდა ქონდეს არჩევანი third party cookies გამორთვის
სხვა რა გზა შეიძლება არსებობდეს, რომლითაც third party tracker-ების დავბლოკვის შემთხვევაშიც მიიღებენ ჩვენს მონაცემებს? - თუ საიტი გაუზიარებს მათ (სერვერიდან და არა პირდაპირ ჩვენი ლეპტოპიდან)
- საიტს უნდა ქონდეს მონაცემთა გამჭვირვალე პოლიტიკა - მომხმარებელმა უნდა იცოდეს, რისთვის გამოიყენება მისი მონაცემები სერვერზე და რომელ სხვა კომპანიებს აქვთ რა ნაწილზე წვდომა.
გარდა ამისა, მნიშვნელოვანია GDPR-ის ეს პუნქტებიც:
- მომხმარებელს აქვს საკუთარი მონაცემების პირდაპირ გადმოწერის მოთხოვნის უფლება
- მომხმარებელს აქვს საკუთარი მონაცემებისათი წაშლის მოთხოვნის უფლება.