Sepet yönetimi

Evet, sepet bilgisini yönetmenin başka yolları da vardır; sepet verilerini saklamak için mutlaka session (oturum) yönetimine ihtiyaç duyulmaz. Session yönetimi, sepet bilgilerini saklamanın yaygın bir yolu olsa da, stateless yaklaşımlar ve alternatif y…


This content originally appeared on DEV Community and was authored by Mustafa Çam

Evet, sepet bilgisini yönetmenin başka yolları da vardır; sepet verilerini saklamak için mutlaka session (oturum) yönetimine ihtiyaç duyulmaz. Session yönetimi, sepet bilgilerini saklamanın yaygın bir yolu olsa da, stateless yaklaşımlar ve alternatif yöntemler de kullanılabilir. İşte birkaç farklı çözüm:

1. Client-Side (İstemci Taraflı) Saklama

Sepet verilerini sunucuda tutmak yerine, istemci tarafında (kullanıcının tarayıcısında) saklayabiliriz. Bunun için birkaç yöntem kullanılabilir:

a) LocalStorage veya SessionStorage

Kullanıcının tarayıcısında depolama alanı olarak kullanılan LocalStorage veya SessionStorage, sepet verilerini saklamak için uygun olabilir.

  • LocalStorage:

    • Veriler tarayıcı kapatıldığında bile korunur.
    • Sepet verilerini JSON formatında LocalStorage’a kaydedebilirsiniz.
    • Sepet verileri yalnızca kullanıcıya özgüdür ve tarayıcı bazlıdır, yani kullanıcının tarayıcısını değiştirmesi veya cihazını değiştirmesi durumunda bu veriler kaybolur.
  • SessionStorage:

    • Veriler, tarayıcı sekmesi veya penceresi kapatılana kadar saklanır.
    • Sepet verilerini yalnızca oturum boyunca saklar, sekme kapandığında veri kaybolur.

Örnek:

  // Sepet verisini saklama (LocalStorage)
  let cartItems = [{ id: 1, name: 'Ürün A', quantity: 2 }];
  localStorage.setItem('cart', JSON.stringify(cartItems));

  // Sepet verisini okuma
  let storedCart = JSON.parse(localStorage.getItem('cart'));

b) Cookies (Çerezler)

Sepet bilgileri tarayıcı çerezlerinde de saklanabilir. Çerezler, kullanıcının tarayıcısında küçük miktarda veri saklar ve tarayıcı tarafından her istekle birlikte sunucuya gönderilir.

  • Avantaj:
    • Sunucu tarafında her istekle birlikte bu veriler alınabilir (sunucu taraflı doğrulama veya kimlik doğrulama mekanizmalarıyla kullanılabilir).
    • Tarayıcı kapansa bile belirli bir süre boyunca saklanabilir.

Örnek:

  // Sepet bilgisi çerezlerde saklanır
  document.cookie = "cartItems=" + JSON.stringify(cartItems) + "; path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT";

2. Token Tabanlı Yönetim (JWT - JSON Web Token)

Stateless bir yapıda, sepet verilerini kullanıcıya ait bir token içinde saklayarak, sunucu tarafında durumu tutmadan sepeti yönetebilirsiniz.

  • JWT Kullanımı:
    • Sepet bilgileri JWT'nin payload kısmında saklanabilir.
    • Kullanıcı her istek yaptığında JWT'yi sunucuya iletir ve sunucu bu token’ı doğrulayarak sepet bilgilerini kullanabilir.
    • Bu yöntemle kullanıcıya özel bir sepet yönetimi sağlanabilir.

Not:

  • JWT'de sepet verilerini saklamak, token boyutunun büyümesine neden olabilir ve büyük veri taşıma konusunda sıkıntılar oluşturabilir. Genellikle kimlik bilgilerini saklamak için kullanılır.

3. Database Tabanlı Yönetim

Sepet verilerini kullanıcıya özgü bir şekilde veritabanında saklamak da oldukça yaygın bir yaklaşımdır. Böylece stateless bir yapıda sunucu, sepet bilgilerini her istekte yeniden yüklemez, ancak kullanıcının kimliğini doğruladıktan sonra veritabanından sepeti yükleyebilir.

  • Senaryo:
    • Kullanıcı oturum açtığında sepet verileri veritabanından çekilir.
    • Kullanıcı her alışveriş yaptığında sepet bilgileri güncellenir.
    • Sepet verileri kullanıcının hesabına bağlı olarak uzun süre saklanabilir.

Örnek:

  • Sepet bilgilerini bir shopping_cart tablosunda saklayabilirsiniz. Her kullanıcı oturum açtığında, sunucu bu tabloya bir sorgu göndererek sepeti getirir.
  CREATE TABLE shopping_cart (
      user_id INT,
      product_id INT,
      quantity INT
  );

4. Backend Cache (Redis gibi)

Durumsuz bir yapı kullanmak istiyorsanız, sepet bilgilerini bir cache sistemi (örneğin Redis) ile de saklayabilirsiniz. Bu yaklaşım, hem sepeti hızlı bir şekilde erişilebilir kılar hem de sunucu tarafında fazla yük yaratmaz.

  • Senaryo:
    • Kullanıcı sepetine ürün eklediğinde, bu veri Redis gibi bir in-memory cache sistemine kaydedilir.
    • Kullanıcı her istek yaptığında, sunucu Redis'ten sepet verilerini hızlıca alır.
    • Kullanıcı oturum açtığında veya ürün eklediğinde, sepet bilgileri Redis üzerinden güncellenir.

Örnek:

  • Kullanıcı sepetini Redis'te "kullanıcı-id" anahtarına göre saklayabilir ve ürünleri oradan çekebilirsiniz.
  # Redis komutları ile saklama
  SET cart:user123 '{"products": [{"id": 1, "name": "Ürün A", "quantity": 2}]}'
  GET cart:user123

Sonuç:

Sepet verilerini yönetmek için session yönetimi şart değildir. Aşağıdaki yaklaşımlarla sepet bilgilerini stateless veya client-side saklayabilirsiniz:

  1. LocalStorage/SessionStorage ile istemci taraflı saklama.
  2. Cookies ile sunucuya gönderilen çerezlerde saklama.
  3. JWT gibi token tabanlı stateless yöntemlerle.
  4. Veritabanı kullanarak sunucu tarafında uzun süreli saklama.
  5. Redis gibi bir cache mekanizması kullanarak hızlı erişim sağlama.

Uygulamanın gereksinimlerine ve mimari tercihlerinize göre bu yöntemlerden biri veya birkaçı kullanılabilir.


This content originally appeared on DEV Community and was authored by Mustafa Çam


Print Share Comment Cite Upload Translate Updates
APA

Mustafa Çam | Sciencx (2024-09-08T20:41:56+00:00) Sepet yönetimi. Retrieved from https://www.scien.cx/2024/09/08/sepet-yonetimi/

MLA
" » Sepet yönetimi." Mustafa Çam | Sciencx - Sunday September 8, 2024, https://www.scien.cx/2024/09/08/sepet-yonetimi/
HARVARD
Mustafa Çam | Sciencx Sunday September 8, 2024 » Sepet yönetimi., viewed ,<https://www.scien.cx/2024/09/08/sepet-yonetimi/>
VANCOUVER
Mustafa Çam | Sciencx - » Sepet yönetimi. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/09/08/sepet-yonetimi/
CHICAGO
" » Sepet yönetimi." Mustafa Çam | Sciencx - Accessed . https://www.scien.cx/2024/09/08/sepet-yonetimi/
IEEE
" » Sepet yönetimi." Mustafa Çam | Sciencx [Online]. Available: https://www.scien.cx/2024/09/08/sepet-yonetimi/. [Accessed: ]
rf:citation
» Sepet yönetimi | Mustafa Çam | Sciencx | https://www.scien.cx/2024/09/08/sepet-yonetimi/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.