Saya sedikit bingung seperti apa yang harus menjadi pendekatan saya, Bekerja pada desain keranjang belanja dan saya perlu menyimpan keranjang belanja baik dalam sesi atau dalam database tetapi tidak yakin pendekatan mana yang terbaik.
- Pengguna tidak masuk dan menambahkan produk ke troli (Pengguna anonim)
- Pengguna masuk dan menambahkan produk ke troli.
Kasus pertama lebih membingungkan bagi saya, karena ada banyak kasus di mana pengguna hanya mengunjungi web-shop dan menambahkan produk tanpa masuk dan sangat mungkin bahwa ia mungkin tidak pergi untuk proses checkout.
Tapi kita masih perlu membuat Keranjang Belanja untuk pengguna ini, untuk membuat dan menyimpan keranjang belanja saya punya dua opsi.
- Saat pengguna menambahkan produk, buat gerobak di database dan kaitkan gerobak ini dengan pengguna ini, saat dia masuk, gerakkan gerobak ini ke pengguna yang masuk.
- Buat Keranjang, tambahkan produk ke sana dan simpan ke Sesi, ketika pengguna masuk, buat Keranjang di basis data dan pengguna yang masuk yang terkait dengan kereta ini dengan Pengguna.
Saya tahu bahwa kedua basis data yang digerakkan sistem Cart juga berdasarkan Sesi dapat memiliki aspek positif dan negatif di sana, tetapi tidak yakin mana yang mungkin merupakan pendekatan terbaik dengan mempertimbangkan poin-poin berikut
- Skalabilitas
- Fleksibilitas
- Kemungkinan diperpanjang
- Aplikasi Harus menjaga kecepatan
Mencari input pada aspek ini untuk memutuskan jalan.
sumber
Jawaban:
Saya akan mencari solusi di mana ID unik diberikan kepada semua pengunjung ketika mereka pertama kali mengunjungi situs. Tidak masalah jika mereka anonim atau dikonfirmasi. Saat pengguna anonim mendaftar, simpan ID unik.
Simpan keranjang belanja di basis data. Penyimpanan murah, dan seharusnya tidak menjadi masalah performa untuk melakukan kueri untuk keranjang sesekali.
sumber
Kedua metode memiliki kelebihan dan kekurangan, tetapi cara saya melihatnya, penyimpanan database memiliki dua keunggulan yang cukup besar.
sumber
Pertanyaannya adalah dengan asumsi Anda perlu sesi sama sekali yang tidak diperlukan di pasar klien saya. Saya kebetulan menjalankan beberapa ratus situs web eCommerce dan beberapa dari mereka mendapatkan traffic tinggi. Kami tidak pernah menggunakan sesi karena mereka tidak dapat diskalakan kecuali ditiadakan maka mereka lebih lambat atau membutuhkan lebih banyak pengaturan. Sesi menghabiskan memori dan database mengambil keadaan sesi sangat lambat dan membutuhkan lebih banyak bagian yang bergerak.
Sebagai gantinya, kami menggunakan HTML5 sessionStorage untuk mempertahankan informasi pengguna apa pun yang perlu kami tarik lagi dan lagi, tetapi tanpa memerlukan cookie rountrip setiap kali untuk menambah bandwidth. Ini adalah IE8 + dan semua peramban dan perangkat seluler modern lainnya kompatibel dengan teknologi ini. TETAPI Anda bisa dengan mudah menyimpan keranjang dalam cookie sebagai cadangan karena ini adalah apa yang kami lakukan sebelumnya. Ini adalah kereta kue yang bagus: http://simplecartjs.org/
Saat pengguna masuk atau masuk, kami menggunakan cookie terenkripsi dengan cap waktu dimasukkan.
Kami juga bergerak ke arah menggunakan ApplicationCache di mana berlaku yang selanjutnya akan mengurangi lalu lintas web sebagai catatan karena Anda dapat mengambil lebih awal sumber daya dan bahkan katalog data sehingga perspektif pengguna akan menjadi situs web pemuatan super cepat dan seluler juga akan bekerja offline (dikurangi transaksi). Tentu saja Anda harus berhati-hati untuk memperbarui manifes ketika produk berubah dll.
sumber
Anda mengasumsikan bahwa penyimpanan sesi dan penyimpanan basis data eksklusif. Mereka bukan. Tapi mari kita mulai dengan mengasumsikan mereka.
Keuntungan untuk penyimpanan sesi adalah tiga kali lipat:
Kekurangan penyimpanan sesi:
Keuntungan penyimpanan basis data:
Kerugian dari penyimpanan basis data:
Anda tidak menyebutkan platform apa yang Anda gunakan. Saya akan mencari pendekatan yang menggunakan sesi yang didukung basis data di mana data sesi hanya ada dalam memori selama siklus permintaan / respons, memuatnya dari database dan menyimpannya kembali ke database. Ini telah membantu saya dengan baik di masa lalu.
Keuntungan dari sesi yang didukung basis data:
Kerugian dari sesi yang didukung basis data:
Ada kemungkinan ketiga, yang disentuh seseorang sebelumnya. Anda bisa melewatkan penggunaan sesi sama sekali dan menggunakan penyimpanan sisi klien dengan memasukkan segala sesuatu dalam penyimpanan lokal cookie atau html.
Saya akan meninggalkan pro / kontra dari itu sebagai latihan untuk Anda, tetapi saya akan memberi Anda petunjuk bahwa untuk penyimpanan HTML5, kompatibilitas browser mungkin sesuatu yang harus ditinjau dengan cermat.
Saya sudah menguraikan fakta untuk Anda. Semoga ini membantu Anda membuat keputusan yang tepat untuk situasi Anda.
sumber
Biarkan kami mempertimbangkan dua kasus penggunaan yang telah Anda sebutkan
Dalam hal ini, Anda pasti ingin menyimpan informasi keranjang pengguna dalam suatu sesi untuk melayani pengguna dengan baik selama sesi mereka. Jika dia memutuskan untuk masuk / membuat akun, Anda dapat menangani ini berdasarkan use case berikutnya. Jika dia tidak masuk, Anda tidak perlu mengisi database Anda dengan informasi pengguna tamu ini karena hanya digunakan untuk melayani tamu selama sesi. Data ini dapat ditangani berdasarkan Stateless yaitu tidak negara tidak disimpan dari sesi ke sesi.
Dalam hal ini, Anda dapat menanganinya dengan cara yang sama seperti di atas (situs e-commerce sekolah lama) dan juga menambahkan informasi ini ke database dan mengaitkannya dengan pengguna. Ini terutama digunakan untuk memberikan informasi stateful (keadaan disimpan dari sesi ke sesi) seperti "Riwayat Penjelajahan Produk", "Rekomendasi" dll. Yaitu mirip dengan Amazon.com.
Hal-hal untuk dipikirkan:
sumber
Pergi untuk sesi ketika pengguna tidak login. Bahkan ketika login membuat keranjang di sesi pertama, dan bertahan ke dalam database hanya ketika pengguna logout atau sesi habis.
Anda harus terus memeriksa jumlah gerobak yang dibuat di sesi ini.
sumber