Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 29669|Jawab: 3

[ASP.NET] ASP.NET beberapa permintaan di halaman secara bersamaan, ada situasi animasi yang ditangguhkan yang diblokir

[Salin tautan]
Diposting pada 22/09/2017 17.32.59 | | | |
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)





Mantan:CEF: Sematkan Chrome untuk klien
Depan:Kesalahan HTTP 503. Layanan ini tidak tersedia.
Diposting pada 06/07/2018 11.53.31 |
Untuk WebForms, tambahkan setelah Halaman di bagian atas aspx (cukup muat halaman pemblokiran itu):

EnableSessionState="Baca-saja"
 Tuan tanah| Diposting pada 14/07/2019 20.34.17 |
Sebagian besar pengembangan web menggunakan sesi untuk menyimpan status sesi, tetapi menggunakan sesi dalam aplikasi asp.net mungkin berdampak signifikan pada performa aplikasi web. Mengapa dan apa yang akan mempengaruhinya dianalisis di bawah ini

Penjelasan MSDN tentang permintaan bersamaan dan status sesi:

Permintaan bersamaan dan status sesi
Akses ke status sesi ASP.NET adalah per sesi, artinya jika dua pengguna yang berbeda mengirim permintaan secara bersamaan, akses ke setiap sesi individual diberikan pada saat yang sama. Namun, jika dua permintaan bersamaan untuk sesi yang sama (dengan menggunakan nilai SessionID yang sama), permintaan pertama akan mendapatkan akses eksklusif ke informasi sesi. Permintaan kedua hanya akan dieksekusi setelah permintaan pertama selesai. (Jika kunci eksklusif pada informasi sesi dirilis karena permintaan pertama melebihi batas waktu penguncian, sesi kedua juga mendapatkan akses.) Jika Anda mengatur nilai EnableSessionState dalam direktif @Page ke ReadOnly, permintaan untuk informasi sesi baca-saja tidak menghasilkan kunci eksklusif pada data sesi. Namun, permintaan baca-saja ke data sesi mungkin masih perlu menunggu hingga kunci dibuka kuncinya dari permintaan baca/tulis yang ditetapkan oleh data sesi.
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com