Siapapun yang telah menulis ASP yang sedikit lebih besar tahu bahwa objek Session sangat mudah digunakan. Objek ini dapat digunakan untuk merekam variabel data pribadi pengguna, yang aman dan nyaman. Tapi tahukah Anda cara kerja Session? Siapapun yang telah menulis ASP yang sedikit lebih besar tahu bahwa objek Session sangat mudah digunakan. Objek ini dapat digunakan untuk merekam variabel data pribadi pengguna, yang aman dan nyaman. Tapi tahukah Anda cara kerja Session? Mungkin setelah memahaminya, Anda tidak lagi berani menggunakan benda kesayangan dan dibenci tersebut. Meski cara alternatif ini sedikit merepotkan, namun setelah pertimbangan jangka panjang, hal itu harus dilakukan.
Pertama, mari kita bicara tentang manfaat Sesi. Ini dapat digunakan untuk mencatat variabel data pribadi klien dan tidak akan hilang dalam rentang waktu. Ini memang fungsi yang penting, terutama untuk sistem dengan anggota yang harus digunakan. Seperti akun login anggota, waktu, status dan banyak data real-time yang harus dicatat (seperti sistem belanja mencatat item di keranjang belanja pengguna). Informasi ini dibutuhkan secara pribadi oleh setiap pengguna dan biasanya digunakan oleh pengembang . Pemrosesan rekaman sesi.
Namun, Sesi di ASP terdiri dari Cookie, dan server mengirimkan semua data yang direkam dalam Sesi ke browser pengguna dalam bentuk Cookie. Biasanya, browser umum akan menyimpan cookie ini. Setiap kali pengguna mengklik link dan terhubung ke server lagi, browser akan mengirimkan cookie ini kembali ke server untuk diproses. Ini adalah prinsip pengoperasian Sesi. Ketika jumlah data lebih besar, karena harus dikirim dan diambil kembali, hal ini tidak hanya memakan bandwidth saluran, namun juga mengurangi kinerja karena server harus menghabiskan lebih banyak sumber daya untuk pemrosesan online dan konfigurasi ulang. memori. Tindakan awal. Sekarang Anda mungkin berpikir, "Saya harus menggunakan fungsi ini, jadi saya harus mengorbankannya." Namun, artikel ini membahas tentang Session. Di satu sisi, artikel ini mengajarkan Anda untuk mengurangi penggunaannya, tentu saja ada alternatif lain.Hal berikutnya yang muncul adalah itu juga milik objek Aplikasi Global.asa.
Aplikasi juga bagus dalam merekam dan memproses data sementara. Kemampuan dan penggunaannya sama dengan Sesi dalam semua aspek. Namun, sebagai perbandingan, data yang direkamnya bersifat publik, yaitu ruang variabel yang dapat dibagikan oleh pengguna mana pun. Berbeda dengan Sesi, Aplikasi tidak mentransfer data ke pengguna dan menunggu koneksi berikutnya untuk membacanya kembali. Ini langsung direkam dalam memori di Server.
Karena objek Aplikasi bersifat publik, hal pertama yang harus dilakukan adalah merencanakan area umum untuk setiap pengguna, sehingga setiap pengguna dapat memiliki areanya sendiri untuk merekam data, guna mencapai tujuan simulasi Sesi. Ada dua pendekatan sekarang:
1. Inisialisasi, buat, dan alokasikan ruang memori pengguna terlebih dahulu saat Server diaktifkan. Biasanya, meskipun pendekatan ini menghabiskan banyak sumber daya segera setelah Server dimulai, pendekatan ini juga menghemat kerumitan karena harus mengalokasikannya setiap kali pengguna. sedang online di masa depan. Namun ada batasannya, cara ini harus membatasi jumlah maksimal orang. Karena diinisialisasi segera setelah diaktifkan, kami hanya dapat memperkirakan pembuatan sejumlah ruang memori, jadi cara ini biasanya digunakan pada program kecil. seperti ruang obrolan.
2. Metode ini harus dianggap lebih tepat untuk aplikasi skala besar. Metode ini mengadopsi metode alokasi dinamis dan mulai mengalokasikan sumber daya kepada pengguna saat pengguna pertama kali terhubung ke server. Tujuan dari kedua metode simulasi Sesi ini adalah untuk mengurangi konsumsi sumber daya Sesi, namun bagaimanapun juga, keduanya tidak dapat sepenuhnya diganti. Kita masih perlu menggunakan sedikit Sesi, yang setidaknya dapat mengurangi banyak beban pelayan.
Opsi pertama
Pertama kita mulai implementasi solusi pertama. Karena Aplikasi diinisialisasi pada saat aktivasi, tentu saja kita harus memulai dari Global.asa:
Inisialisasi sudah selesai, tapi bagaimana cara menggunakannya? Kita hanya perlu mengubah data yang semula disimpan menggunakan Session, seperti nomor akun dan waktu login, menjadi objek Aplikasi yang kita buat tempat pengguna login:
Copy kode kodenya sebagai berikut:
'Cari ruang yang tidak terpakai
Untuk i = 1 Ke Aplikasi (ClientMax)
Jika Aplikasi(User_Status_ & i) = 0 Maka
'Nomor sementara pengguna
Sesi(Indeks) = i
'mengunci
Aplikasi Aplikasi.Kunci
'Setel ke status bekas
Application(User_Status_ & i) = 1 'Masukkan data variabel
Aplikasi(Akun_Pengguna_ & i) = Akun
Aplikasi(Waktu_Log Pengguna_ & i) = Sekarang()
'Membuka kunci
Aplikasi. Buka kunci
Keluar Untuk
Akhiri Jika
Berikutnya
Untuk mendapatkan data variabel terkait pengguna, lakukan hal berikut:
Respons.Tulis(Aplikasi(Akun_Pengguna_ & Sesi(Indeks))
Anda mungkin menemukan bahwa bukankah dikatakan tidak menggunakan Sesi? Lalu kenapa Session masih ada pada source code di atas? Seperti disebutkan sebelumnya, alternatif ini tidak dapat sepenuhnya menggantikan Sesi. Browser tidak selalu online dengan Server. Ini akan terputus setelah membaca halaman tersebut. Saat ini, kita harus mengandalkan Sesi. Kami memberikan pengguna satu set nomor real-time. Nomor ini adalah jumlah ruang variabel pengguna pada Aplikasi. Anda dapat membayangkan bahwa ada banyak brankas di bank Anda sebuah kunci, dan kuncinya Ada nomor di atasnya, dan nomor di kunci itu memungkinkan petugas membawa Anda ke brankas Anda sendiri. Masih ada perbaikan pada metode ini, namun cukup untuk aplikasi kecil.
Pilihan kedua
Mengenai solusi sebelumnya, Anda mungkin juga berpikir bahwa nomor khusus kami dicatat menggunakan Sesi. Berbicara tentang angka, objek Sesi menyediakan metode "SessionID". Benar sekali, mau kita gunakan atau tidak, Server akan secara otomatis memberikan nomor pada setiap pengguna, dan nomor ini tidak akan terulang kembali. Penomoran ini merupakan tindakan yang pasti akan dilakukan Session. Kita dapat menggunakannya untuk menggantikan program penomoran yang kita tulis sendiri, yang juga menghemat banyak tenaga dan bahkan memberikan skalabilitas yang lebih besar. Namun pada dasarnya solusi pertama di atas masih ada kegunaannya, seperti aplikasi kecil seperti chat room yang membatasi jumlah orang. Alternatif selanjutnya adalah untuk sistem yang lebih besar.
Untuk website dengan pengunjung ratusan, ribuan bahkan puluhan ribu per detik, solusi sebelumnya pasti tidak akan berhasil. Misalkan Anda menetapkan batas atas jumlah orang menjadi 10.000. Setelah diaktifkan, Server akan membantu Anda memotong 10.000 area untuk 10.000 pengguna. Jika ada 5 variabel dalam suatu area, dan satu variabel menempati 32 byte, 10.000 Ini menempati lebih banyak. dari 320000K (320MB), Server Segera setelah diaktifkan, begitu banyak sampah yang dimasukkan ke dalam memori, dan kinerjanya pasti akan berkurang banyak sebelum memasuki medan perang; dan jangan melihat angka-angka kecil ini, dan berpikir bahwa 512 MB Anda akan menjadi cukup. Angka-angka di atas mengasumsikan jumlah minimum, ditambah Tidak diketahui berapa banyak sumber daya tambahan yang akan digunakan server saat mengkonfigurasi memori, jadi hanya akan lebih banyak, bukan lebih sedikit. Oleh karena itu, satu-satunya solusi adalah dengan mengkonfigurasi ruang variabel pengguna secara dinamis, dan hanya memotong area ketika pengguna terhubung ke server. Dengan cara ini, tidak perlu mengkonfigurasi memori yang besar terlebih dahulu.
Opsi kedua relatif mudah diterapkan. Silakan buang semua yang ada di opsi pertama. Kita tidak perlu menyentuh Global.asa. Kita hanya perlu mengubah tempat login pengguna dan tempat berguna lainnya:
Copy kode kodenya sebagai berikut:
'LockApplicationApplication.Lock 'Masukkan data variabel
Aplikasi(User_Account_ & Session.SessionID) = Akun
Aplikasi(User_Logtime_ & Session.SessionID) = Sekarang() 'Buka Kunci Aplikasi.Buka Kunci
Untuk mendapatkan data variabel terkait pengguna, lakukan hal berikut:
Copy kode kodenya sebagai berikut:
Respons.Tulis(Aplikasi(User_Account_ & Session.SessionID))
Di masa lalu, saya membaca banyak buku yang mengatakan bahwa sesi sangat membutuhkan sumber daya, jadi cobalah untuk tidak menggunakannya, namun Anda tetap harus menggunakannya saat Anda harus melakukannya, dan buku tersebut tidak mengajarkan solusi yang lebih tepat. Sekarang setelah Anda memahami cara mengganti Sesi, manfaatkanlah! Mungkin masalah kinerja yang selalu mengganggu saya bisa diperbaiki banyak!