Saya baru saja melihat beberapa ide tentang keranjang belanja dari teman sekelas Wu Lei. Saya kebetulan akrab dengan aspek e-commerce ini, jadi saya langsung menunjukkan rasa malu saya. Tadinya saya ingin membalas yang berikut ini, tapi ternyata nulisnya butuh banyak , jadi sebaiknya saya tulis saja di sini. Biar lebih mudah mencarinya sendiri di kemudian hari. Haha data di keranjang belanja disimpan di database?
Saya terutama ingin tahu bagaimana pendapat para insinyur perangkat lunak nyata tentang masalah ini dalam proyek nyata. Setelah mencari di Google, saya menemukan artikel dari seorang netizen di taman kami: Keranjang belanja harus menjadi modul untuk menyimpan data sementara, dan dia menyimpannya di objek Session. Apa yang dikatakan netizen ini masuk akal, tapi saya tidak suka pendekatan ini. Jika semua orang menyimpannya di objek Session dan ribuan pengguna berbelanja bersama, server ASP.NET pasti akan menanggung beban yang sangat besar. Mungkin situs web domestik kita lebih baik, tetapi bagaimana kita melakukan ini untuk situs web seperti Amazon? Website Amazon China yang merupakan website Joyo tidak menyimpannya di objek Session, karena jika saya tidak melakukan pemesanan produk yang saya masukkan ke keranjang belanja kali ini, produk tersebut akan tetap ada di keranjang belanja setelah login. di lain waktu. Jadi saya pikir mereka mungkin memasukkan data dari keranjang belanja itu ke dalam database.
Balasan: Menyimpan keranjang belanjaan di Sesi sepertinya hanya ada dalam desain kursus di universitas atau di beberapa proyek magang yang tidak dipedulikan siapa pun. Faktanya, hampir semua website e-commerce menyimpan data keranjang belanja di database. Berikut beberapa penjelasan dan pertimbangan desain:
1. Sesi tidak cocok untuk menyimpan data dalam jumlah besar, jika ada banyak pengguna, hal ini pasti akan mempengaruhi kinerja server, yang harus dihindari.
2. Ada masalah hilangnya Sesi secara tidak sengaja, atau ketika pengguna menutup browser secara tidak sengaja, semua item di keranjang belanja akan hilang, sehingga mengakibatkan pengalaman pengguna yang sangat buruk.
3. Cookies dapat menyelesaikan masalah Sesi pada item di atas, namun karena batas panjang Cookies, overhead komunikasi saat menggunakan Cookies, dan pertimbangan keamanan, Cookies tidak cocok untuk keranjang belanja.
4. Pengalaman pengguna yang lebih baik adalah terlepas dari apakah pengguna login atau tidak, status keranjang belanja dapat dicatat dalam jangka waktu tertentu. Hal ini mengharuskan keranjang belanja di database tidak dapat dikaitkan dengan pengguna.
5. Produk yang ditempatkan di keranjang belanja umumnya merupakan produk dengan tujuan pembelian, namun belum tentu menjadi pesanan sebenarnya. Saat ini, penyimpanan data memainkan peran penting dalam penambangan data dan analisis bisnis.
Pertanyaan: 2. Tentang konkurensi?
Ternyata ketika saya sedang mengembangkan situs tiruan saya sendiri, saya pernah memikirkan pertanyaan ini: Jika pelanggan memasukkan beberapa buku ke keranjang belanja di situs web, apakah jumlah buku tersebut harus dikurangi dari inventaris? Itulah yang saya lakukan. Saya mengurangi jumlah buku terkait di keranjang belanja dari database untuk mencegah pengguna lain melihat jumlah persediaan palsu saat ini (jika tidak dikurangi, maka pengguna lain dapat membelinya. Misalnya: jumlah buku di persediaannya 10 Buku ini, pelanggan A memasukkan 10 eksemplar ke keranjang belanjanya, dan pelanggan B juga memasukkan 10 eksemplar ke keranjang belanjanya, maka siapa yang akan membeli buku ini akan menjadi konflik). Namun akibatnya setiap kali pelanggan memperbarui keranjang belanjaannya, akan ada komunikasi dengan database, yang menambah beban pada server data. Amazon.cn tidak berjalan dengan baik dalam hal ini. Beberapa hari yang lalu, saya yakin Anda mungkin mengalami masalah saat membeli buku "Pemahaman Mendalam tentang Sistem Operasi", Anda awalnya melakukan pemesanan, tetapi diberi tahu. bahwa itu kehabisan stok pada hari berikutnya. Kejadian ini memang sangat mempengaruhi kredibilitas Amazon.cn Saya tidak tahu apakah sistem mereka telah memecahkan masalah ini sekarang, tapi harga Joyo dari buku "Pemahaman Mendalam tentang Sistem Operasi" tidak seperti dulu. . Saya tidak tahu bagaimana para ahli memecahkan masalah ini. Anda dipersilakan untuk menuliskan pengalaman sukses Anda di komentar.
Balasan: Pertama-tama, mari kita bicara tentang beban pada server database. Pikirkan berapa kali database perlu diakses setiap kali halaman diakses, lalu pikirkan berapa kali yang diperlukan untuk menukar satu operasi penambahan. keranjang belanja (jumlah akses terutama bergantung pada kemudahan penggunaan situs web). Desain, ini topik lain), jadi meskipun memodifikasi desain di sini dapat mengurangi beberapa tekanan database, menurut Ding Xue tidak perlu terlalu memperhatikan di sini.
Sudah menjadi praktik umum saat ini bahwa barang-barang di keranjang belanja tidak akan segera dikurangi dari inventaris. Hal ini terutama untuk mencegah seseorang mengambil barang-barang tersebut dengan jahat melalui keranjang belanja barang di keranjang belanja tidak akan dipotong dari stok. Memasuki pesanan akhir yang berhasil, Anda tidak boleh membiarkan keranjang belanja mempengaruhi penjualan. Inventaris umumnya dipotong ketika pesanan berhasil dikirimkan. Artinya, ketika pengguna mengirimkan pesanan, Anda memiliki kesempatan lain untuk mengingatkan pengguna bahwa tidak ada inventaris, sehingga tidak perlu mengurangi inventaris saat melakukan pemesanan di dalam. keranjang belanja. Untuk pesanan yang berhasil, tidak semua pesanan yang dikirimkan oleh pengguna dianggap sebagai pesanan yang berhasil. Ada proses peninjauan pesanan otomatis. Program ini sulit untuk ditulis, tetapi ini memang sangat penting berdasarkan analisis data sebelumnya, perilaku pengguna, reputasi pengguna, dll . Data berasal dari sistem yang secara otomatis menyelesaikan peninjauan pesanan dalam beberapa menit. Intensitas peninjauan terkait dengan industri. Hal ini dapat menghilangkan sebagian besar pesanan palsu, dan beberapa di antaranya mungkin harus dialihkan ke peninjauan manual oleh sistem peninjauan otomatis.
Ada situasi khusus di sini. Untuk beberapa produk khusus seperti tiket konser, mungkin terdapat pemilihan kursi secara online. Dalam hal ini, akan lebih berguna untuk memesan kursi setelah menempatkan keranjang belanja segera setelah menempatkan keranjang belanja, tetapi akan dilepaskan secara otomatis jika tidak menjadi pesanan nyata dalam jangka waktu tertentu, seperti sepuluh menit. Meskipun tidak dapat sepenuhnya menghilangkan pendudukan kursi yang berbahaya, hal ini dapat menyelesaikan sebagian besar masalah. Saat ini, pesanan yang berhasil di bidang tiket berbeda dari kebanyakan industri lainnya. Kriteria untuk menilai keberhasilan pesanan pemilihan kursi online di industri tiket adalah apakah pembayarannya berhasil, yang berarti kecuali Anda membayar, Anda hanya akan bisa menginap selama sepuluh. menit.
Pertanyaan: 3. Hubungan antara pesanan dan detail pesanan serta keranjang belanja
Saya pikir masalah ini mungkin selalu menjadi masalah besar untuk situs web jenis ini! Dua hari yang lalu, Guru Chen dari CSTP mewawancarai saya melalui telepon mengenai pertanyaan ini. Saya sangat gugup saat itu dan jawaban saya terhadap pertanyaan tersebut tidak begitu jelas. Faktanya, masalah ini tidak sulit untuk dipikirkan secara sederhana: ada dua tabel, pesanan dan detail. Setiap kolom di tabel pesanan menunjuk ke kolom yang sesuai di tabel detail. Kunci asing adalah nomor pesanan dalam tabel pesanan.
Balasan: Pertanyaan ini relatif sederhana, salah satunya adalah dengan memasukkannya ke dalam keranjang belanja dan memperlakukannya sebagai pesanan. Dalam keadaan ini, pesanan dapat diubah dan keranjang belanja digabungkan ke dalam sistem pesanan ( perhatikan penanganan status login pengguna dan non-login)); yang kedua adalah memiliki tabel keranjang belanja terpisah. Ketika pesanan akhirnya dikirimkan, informasi dalam keranjang belanja disalin ke tabel pesanan dan detail pesanan. Yang terakhir ini lebih umum digunakan, dan pilihan spesifiknya bergantung pada industri dan atribut produk.
Pertanyaan: 4. Bagaimana cara menghasilkan nomor pesanan dalam daftar detail?
Pertanyaan ini merupakan warisan dari pertanyaan 3. Saya masih belum tahu bagaimana cara mengatasi masalah ini. Saya punya dua solusi, satu menggunakan pemicu dan yang lainnya adalah pemrograman. Yang pertama menambahkan detail setiap kali pelanggan memasukkan produk ke keranjang belanja, membuat pesanan setelah mengonfirmasi pembelian, dan mengubah status pembelian di tabel detail untuk memicu pemicu dan menghasilkan nomor pesanan (tentu saja, nomor pesanan ini bisa berupa Pemrograman di trigger bisa juga dengan mengatur kolom nomor pesanan di tabel pesanan untuk menghasilkan nomor seri secara otomatis). Yang terakhir akan menilai nomor pesanan dan kemudian menambahkan 1 untuk menghasilkan nomor pesanan baru. Namun saya selalu merasa kedua solusi ini sangat buruk, dan saya ingin tahu cara menangani nomor pesanan di situs web komersial.
Balasan: Pertama-tama, menurut saya pribadi, solusi pemicu tidak disarankan. Saya tidak akan menjelaskan alasannya, jika tidak maka akan menjadi kekacauan besar. Ada juga dua metode di sini. Yang pertama adalah menghasilkan nomor secara otomatis dari tabel pesanan. Saat membuat pesanan, pertama-tama tuliskan ke dalam tabel pesanan, lalu ambil nomor pesanan dan kemudian perbarui tabel detail pesanan; nomor pesanan sesuai aturan bisnis. Ketika nomor pesanan Setelah diketahui, Anda dapat membuat catatan pesanan atau catatan detail terlebih dahulu, tetapi Anda harus memastikan bahwa catatan detail harus memiliki catatan pesanan di akhir, jika tidak maka akan ada catatan pesanan. banyak detail aneh. Ada dua metode untuk metode yang terakhir. Salah satunya adalah nomor pesanan dihasilkan oleh database, dan tabel sementara umumnya digunakan. Keuntungannya adalah nomor seri dapat digunakan secara universal di semua bisnis nomor yang dihasilkan oleh suatu program. GUID dapat digunakan saat membuat program, tetapi Cara yang lebih baik adalah dengan menggunakan waktu pemesanan ditambah nilai identifikasi Ukuran perincian ditentukan berdasarkan volume. Bagian identifikasi diberi nomor secara berurutan. Perincian waktu juga harus dipertimbangkan untuk mencegah orang lain menghitung secara kasar volume bisnis Anda (keringat~~~ Ini juga masalah lain. Ada banyak. metode. Itu tergantung situasinya. Saya akan menulisnya di lain hari ketika saya punya waktu. Mari kita menulis artikel tentang pembuatan nomor pesanan. Saya akan membalasnya dulu, jadi saya mungkin punya cukup informasi...)