Protokol HTTP tidak memiliki kewarganegaraan. Sesi adalah cara untuk mempertahankan status klien di seluruh permintaan HTTP. Anda dapat memilih untuk melakukannya dengan penanganan sesi bawaan platform atau melakukannya sendiri dengan parameter string kueri. Bagaimanapun beberapa konsep sesi diperlukan untuk banyak tugas.
Kolega Anda mungkin tidak menyukai implementasi tertentu, atau belum menggunakan sesi untuk tujuan yang dimaksudkan. Jika Anda perlu menyimpan informasi tentang koneksi klien tertentu di seluruh permintaan HTTP, Anda memerlukan beberapa bentuk kegigihan sesi.
Masalah-masalah berikut ini spesifik untuk implementasi:
Sifat variabel sesi yang tidak diketik
Sifat lingkup global dari variabel sesi
Muat server penyeimbang kehilangan sesi
Kolam aplikasi / server memulai kembali
Sebagai contoh, saya paling sering bekerja di PHP dan menyimpan informasi sesi saya di database relasional. Jadi variabel sesi saya diketik. Load balancing dan server restart tidak menyebabkan masalah sesi.
Yang ini lebih menarik:
Time-out sesi menyebabkan hilangnya negara
Sesi paling sering disimpan melalui cookie. Ini dapat dihapus oleh klien kapan saja. Tetapi mereka juga dapat dipertahankan melalui parameter string kueri dan karenanya tidak pernah kehabisan waktu pada klien. Waktu tunggu server terserah Anda. Jadi, bahkan masalah ini adalah implementasi khusus.
Mari kita tidak membuang seluruh konsep sesi hanya karena kita tidak suka implementasi tertentu. Kerangka kerja aplikasi web yang baik akan memfasilitasi penggunaan sesi dengan benar untuk mempertahankan login pengguna atau mempertahankan hal lain yang khusus untuk kunjungan pengguna saat ini. Catatan basis data pengguna dapat (dan harus) digunakan untuk menyimpan hal-hal khusus untuk mereka ketika login. Pengunjung anonim, bagaimanapun, mungkin memiliki informasi sementara yang juga layak dipertahankan dalam sesi mereka, seperti daftar pendek dari halaman terbaru yang dikunjungi atau preferensi untuk sembunyikan pemberitahuan yang telah mereka lihat. Umumnya hanya informasi sementara yang lebih kecil yang sesuai untuk penyimpanan sesi.
using things like query string parameters instead
- Dengan kasing yang satu ini, selalu selalu gunakan parameter string kueri jika memungkinkan. Menggunakan sesi untuk tipe parameter itu rapuh dan dapat memperkenalkan bug aneh ketika pengguna membuka banyak tab.