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)
|