Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 29669|Atbildi: 3

[ASP.NET] ASP.NET lapā vienlaikus tiek saņemti vairāki pieprasījumi, tiek bloķēta apturēta animācijas situācija

[Kopēt saiti]
Publicēts 22.09.2017 17:32:59 | | | |
Nesen, kad es strādāju pie projekta, dažām lapām bija jāielādē daudz datu, un dažreiz es noklikšķināju uz lapas, negaidot, kamēr lapa tiks ielādēta, un pēc tam vēlreiz noklikšķināju uz citas lapas

Ielādējot tīmekļa lapu, būs ļoti lēns apturētas animācijas stāvoklis, tāpēc šodien to rūpīgi izpētīsim.

Sākumā es domāju, ka šī situācija radīsies daudzās vietnēs vai manā datortīkla ātruma problēmā, bet es atklāju, ka šai vietnei nav šādas situācijas, dažreiz es iestrēgšu, kad es publicēju, bet es noklikšķināju uz citām cilnes lapām, lai ātri ielādētu.

Apskatīsim šodien tuvāk !! Vispirms pārbaudītais kods:

Mājas skata kods:

Kontroliera kods:



Testa koda analīzei mūsu kontrolierim ir 3 metodes, viena ir mājas lapa, bet pārējās divas ir testa metodes

Test1 pieprasījums tiek bloķēts uz 5 sekundēm un pēc tam atgriež datus lietotājam

Test2 pieprasījumi netiks bloķēti un atgriezīs datus tieši lietotājam

Mūsu mājaslapa ir divas saskarnes Ajax pieprasījumiem, kas ir asinhroni pieprasījumi, tāpēc nav bloķēšanas problēmu.

Mēs konstatēsim, ka Test1 metode izvada saturu tikai pēc tam, kad Test2 izvada saturu (Parasti lapa tieši izvadīs Test2 atgriezto saturu un pēc tam pagaidiet 5 sekundes, lai izvadītu Test1 atgriezto saturu, jo js nebloķē



Pēc tam mēs tieši piekļūstam Test1 un Test2 saskarnēm, vispirms piekļūstam Test1 un pēc tam nekavējoties piekļūstam Test2 un konstatējam, ka Test2 ir jāgaida, līdz Test1 atgriežas pabeigt, kā parādīts zemāk redzamajā attēlā:



Ja lapas pieprasījums iestata lasītāja bloķēšanu, citi pieprasījumi, kas tiek apstrādāti vienlaicīgi tajā pašā sesijā, nevarēs atjaunināt sesijas stāvokli, bet vismaz tos var lasīt. Ja lapa pieprasa rakstīšanas bloķēšanu sesijas stāvoklim, visas pārējās lapas tiek bloķētas neatkarīgi no tā, vai tās vēlas lasīt vai rakstīt saturu. Piemēram, ja vienā sesijā vienlaikus raksta saturu divi programmu skati, vienai programmai ir jāgaida, līdz otra programma ir pabeigta, pirms to var rakstīt. AJAX programmēšanā ir svarīgi apzināties, ka tas notiek.

Īpaša piezīme: Tikai rakstot sesiju, Asp.net bloķēs pieprasījumu, bet tik ilgi, kamēr esat apmeklējis lapu, kurā ir rakstīta sesija, piemēram, operācija pēc pieteikšanās sistēmā ar sesiju (sesija ir bloķēta līdz tās derīguma termiņa beigām, protams, tas ir tikai gadījums, kad sesijas ID ir vienāds). Būs šī problēma.

Netizen information

Kamēr tīmekļa vietne izmanto sesiju, katrs pieprasījums bloķē sesiju visā tās darbības laikā, tāpēc pieprasījumi ar vienu un to pašu sesijas ID ir jāgaida, lai tiktu atbloķēti

Tas nozīmē, ka, ja vietnei ir taimauta lapa, tā neko nevar darīt, un jums ir jāgaida, līdz lapa ar laiku tiek ielādēta.

Jūs to arī nevarat izdarīt, vairāki ajax vienlaicīgi pieprasījumi vienā lapā, jūs to nevarat izdarīt, ziņojumu aptaujas pieprasījumi.



Rezumējot:Ja jūs veicat sesiju uz pieprasījumu, ja jūs neiesniedzat sesiju pieprasījumam, iepriekš minētā situācija nenotiks

Šķīdums:

Kontrollera kontrollerim pievienots līdzeklis SessionState(System.Web.SessionState.SessionState.SessionState.ReadOnly)

Piezīme:

Obligāti nozīmē, ka pieprasāt ekskluzīvu sesijas bloķēšanu (t.i., netiek paralēli apstrādāti pieprasījumi vienam un tam pašam sesijas ID)
Tikai lasīšana nozīmē, ka jūs pieprasāt neekskluzīvu sesijas bloķēšanu (t.i., jūsu pieprasījumam joprojām ir jāgaida, kamēr pieprasījumi ar ekskluzīvu bloķēšanu tiks pabeigti, bet jūs varat apstrādāt pieprasījumus ar neekskluzīvu slēdzenes paralēli. Tomēr jums ir jānodrošina, lai jūsu kods nerakstītu uz Session. To ne vienmēr nosaka sistēma)
Obligāts nozīmē jūsu pieprasīto sesijas muteksu (t.i., nav nepieciešams paralēli apstrādāt vienu un to pašu sesijas ID)

Tikai lasāms nozīmē, ka jūsu pieprasītā sesija ir neekskluzīva bloķēšana (t. i., jūsu pieprasījums joprojām ir jāgaida līdz pabeigšanai, ekskluzīvas bloķēšanas pieprasījums, bet jūs varat apstrādāt pieprasījumu ar paralēlu neekskluzīvu bloķēšanu). Bet jūs vēlaties pārliecināties, ka jūsu kods neraksta sesijas. Tas nav jāizpilda sistēmai)





Iepriekšējo:CEF: Chrome iegulšana klientam
Nākamo:HTTP kļūda 503. Pakalpojums nav pieejams.
Publicēts 06.07.2018 11:53:31 |
Tīmekļa veidlapām pievienojiet aiz lapas aspx augšdaļā (vienkārši ielādējiet bloķējošo lapu):

EnableSessionState="Tikai lasāms"
 Saimnieks| Publicēts 14.07.2019 20:34:17 |
Lielākā daļa tīmekļa izstrādes izmanto sesijas, lai saglabātu sesiju stāvokļus, bet sesiju izmantošana asp.net lietojumprogrammās var būtiski ietekmēt tīmekļa lietojumprogrammu veiktspēju. Kāpēc un kas to ietekmēs, ir analizēts tālāk

MSDN skaidrojums par vienlaicīgiem pieprasījumiem un sesiju stāvokļiem:

Vienlaicīgi pieprasījumi un sesijas statuss
Piekļuve ASP.NET sesijas stāvoklim ir sesija, kas nozīmē, ka, ja divi dažādi lietotāji vienlaikus nosūta pieprasījumu, piekļuve katrai atsevišķai sesijai tiek piešķirta vienlaikus. Tomēr, ja divi vienlaicīgi pieprasījumi attiecas uz vienu un to pašu sesiju (izmantojot vienu un to pašu SessionID vērtību), pirmais pieprasījums iegūs ekskluzīvu piekļuvi sesijas informācijai. Otrais pieprasījums tiks izpildīts tikai pēc pirmā pieprasījuma pabeigšanas. (Ja sesijas informācijas ekskluzīvā bloķēšana tiek atbrīvota, jo pirmais pieprasījums pārsniedz bloķēšanas taimautu, piekļuve tiek iegūta arī otrajai sesijai.) Ja @Page direktīvā iestatāt vērtību EnableSessionState uz Tikai lasāms, tikai lasāmas sesijas informācijas pieprasījumi nerada sesijas datu ekskluzīvu bloķēšanu. Tomēr tikai lasāmiem sesijas datu pieprasījumiem, iespējams, joprojām ir jāgaida, līdz bloķēšana tiek atbloķēta no sesijas datu iestatītā lasīšanas/rakstīšanas pieprasījuma.
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com