Baru-baru ini, ketika saya sedang mengerjakan sebuah proyek, beberapa halaman perlu memuat banyak data, dan terkadang, saya mengklik halaman tanpa menunggu halaman selesai dimuat, dan kemudian mengklik halaman lain lagi
Akan ada status animasi yang ditangguhkan yang sangat lambat saat memuat halaman web, jadi mari kita pelajari dengan cermat hari ini.
Awalnya, saya berpikir bahwa situasi ini akan terjadi di banyak situs web atau masalah kecepatan jaringan komputer saya, tetapi saya menemukan bahwa situs ini tidak memiliki situasi ini, terkadang, saya akan terjebak ketika saya memposting, tetapi saya mengklik halaman lain di tab untuk memuat dengan cepat.
Mari kita lihat lebih dekat hari ini!! Kode yang diuji terlebih dahulu:
Kode Homeview:
Kode Pengontrol:
Untuk analisis kode pengujian, pengontrol kami memiliki 3 metode, satu adalah halaman beranda, dan dua lainnya adalah metode pengujian
Permintaan Test1 diblokir selama 5 detik dan kemudian mengembalikan data ke pengguna
Permintaan Test2 tidak akan diblokir dan akan mengembalikan data langsung ke pengguna
Beranda kami adalah dua antarmuka untuk permintaan Ajax, yang merupakan permintaan asinkron, sehingga tidak ada masalah pemblokiran.
Kita akan menemukan bahwa metode Test1 menghasilkan konten hanya setelah Test2 mengeluarkan konten (Biasanya, halaman akan menampilkan konten yang dikembalikan oleh Test2 secara langsung, lalu menunggu 5 detik untuk mengeluarkan konten yang dikembalikan oleh Test1, karena js tidak memblokir)
Kemudian, kita langsung mengakses antarmuka Test1 dan Test2, kita mengakses Test1 terlebih dahulu, lalu segera mengakses Test2, dan menemukan bahwa Test2 harus menunggu hingga Test1 kembali selesai, seperti yang ditunjukkan pada gambar di bawah ini:
Jika permintaan halaman menetapkan kunci pembaca, permintaan lain yang sedang diproses pada saat yang sama dalam sesi yang sama tidak akan dapat memperbarui status sesi, tetapi setidaknya dapat dibaca. Jika halaman meminta kunci tulis untuk status sesi, maka semua halaman lain akan diblokir, terlepas dari apakah mereka ingin membaca atau menulis konten. Misalnya, jika dua tampilan program menulis konten dalam sesi yang sama pada saat yang sama, satu program harus menunggu hingga program lain selesai sebelum dapat ditulis. Dalam pemrograman AJAX, penting untuk menyadari hal ini terjadi.
Catatan khusus: Hanya saat menulis sesi, Asp.net akan memblokir permintaan, tetapi selama Anda telah mengunjungi halaman tempat sesi ditulis, seperti operasi setelah masuk ke sistem dengan sesi (sesi dikunci hingga kedaluwarsa, tentu saja, hanya SessionID yang sama). Akan ada masalah ini.
Informasi Netizen
Selama situs web menggunakan sesi, setiap permintaan akan mengunci sesi sepanjang masa pakainya, sehingga permintaan dengan sessionid yang sama harus menunggu untuk dibuka kuncinya
Artinya, jika situs web memiliki halaman yang habis waktunya, itu tidak dapat berbuat apa-apa, dan Anda harus menunggu halaman berjangka waktu dimuat.
Anda juga tidak dapat melakukannya, beberapa permintaan ajax bersamaan di halaman yang sama, Anda tidak dapat melakukannya, pesan permintaan polling.
Singkatnya:Jika Anda mengambil sesi ke permintaan, jika Anda tidak membawa sesi ke permintaan, situasi di atas tidak akan terjadi
Larutan:
Menambahkan fitur SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly) ke pengontrol pengontrol
Nota:
Wajib berarti Anda meminta kunci eksklusif pada Sesi (yaitu tidak ada pemrosesan paralel permintaan untuk sessionID yang sama) ReadOnly berarti Anda meminta kunci non-eksklusif pada Sesi (yaitu permintaan Anda masih harus menunggu permintaan dengan kunci eksklusif selesai, tetapi Anda dapat memproses permintaan dengan non-eksklusif kunci secara paralel. Namun, terserah Anda untuk memastikan bahwa kode Anda tidak menulis ke Sesi. Itu tidak selalu diberlakukan oleh kerangka kerja) Diperlukan berarti muteks sesi yang Anda minta (yaitu tidak ada persyaratan untuk memproses SessionID yang sama secara paralel)
ReadOnly berarti bahwa sesi yang Anda minta adalah kunci non-eksklusif (yaitu permintaan Anda masih harus menunggu selesai, permintaan untuk kunci eksklusif tetapi Anda dapat memproses permintaan dengan kunci non-eksklusif paralel). Tetapi Anda ingin memastikan kode Anda tidak menulis sesi. Itu tidak harus dieksekusi oleh kerangka kerja)
|