Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 29669|Vastaus: 3

[ASP.NET] ASP.NET sivulla on useita pyyntöjä samanaikaisesti, syntyy esto-animaatio

[Kopioi linkki]
Julkaistu 22.9.2017 17.32.59 | | | |
Äskettäin, kun työskentelin projektin parissa, joidenkin sivujen piti ladata paljon dataa, ja joskus klikkasin sivua odottamatta sivun latautumista, ja sitten klikkasin taas toista sivua

Sivun latauksen aikana animaatio on hyvin hidas, joten tutkitaan sitä tarkasti tänään.

Aluksi ajattelin, että tämä tilanne tapahtuisi monilla verkkosivuilla tai tietokoneverkon nopeusongelmassa, mutta huomasin, ettei tällä sivustolla ollut tällaista tilannetta; joskus jäin jumiin postauksessa, mutta klikkasin muita sivuja välilehdellä latatakseni nopeasti.

Katsotaanpa tarkemmin tänään!! Ensimmäisenä testattu koodi:

Homeview-koodi:

Ohjainkoodi:



Testikoodin analysointiin ohjaimellamme on kolme menetelmää: yksi on kotisivu ja kaksi muuta testimenetelmiä

Test1-pyyntö esittää 5 sekunniksi ja palauttaa sitten tiedot käyttäjälle

Test2-pyynnöt eivät estä ja palauttavat tiedot suoraan käyttäjälle

Kotisivullamme on kaksi rajapintaa Ajax-pyynnöille, jotka ovat asynkronisia pyyntöjä, joten esto-ongelmaa ei ole.

Huomaamme, että Test1-menetelmä tuottaa sisältöä vasta sen jälkeen, kun Test2 tuottaa sisältöä (Normaalisti sivu tuottaa suoraan Test2:n palauttaman sisällön ja odottaa sitten 5 sekuntia ennen kuin Test1:n palauttama sisältö tulee ulos, koska js ei estä



Sitten pääsemme suoraan Test1- ja Test2-rajapintoihin, ensin Test1:een ja sitten heti Test2:een, ja huomaamme, että Test2:n täytyy odottaa, että Test1 palaa valmiiksi, kuten alla olevassa kuvassa näkyy:



Jos sivupyyntö asettaa lukituslukon, muut samassa istunnossa samanaikaisesti käsiteltävät pyynnöt eivät pysty päivittämään istuntotilaa, mutta ainakin ne voidaan lukea. Jos sivu pyytää kirjoituslukitusta istuntotilalle, kaikki muut sivut estetään, riippumatta siitä, haluavatko ne lukea vai kirjoittaa sisältöä. Esimerkiksi, jos kaksi ohjelmanäkymää kirjoittavat sisältöä samassa istunnossa samanaikaisesti, toisen ohjelman on odotettava, että toinen ohjelma on valmis, ennen kuin se voidaan kirjoittaa. AJAX-ohjelmoinnissa on tärkeää olla tietoinen tästä tapahtumasta.

Erityishuomautus: Vain istuntoa kirjoittaessa Asp.net estää pyynnön, mutta niin kauan kuin olet käynyt sivulla, jossa istunto kirjoitetaan, esimerkiksi toiminnossa kirjautumisen jälkeen järjestelmään istunnon kanssa (istunto on lukittu siihen asti, kunnes se vanhenee, tietysti vain SessionID on sama). Tämä ongelma tulee olemaan.

Nettitietoa

Niin kauan kuin verkkosivusto käyttää istuntoa, jokainen pyyntö lukitsee istunnon koko elinkaarensa ajan, joten saman sessionid-tunnuksen pyyntöjen on odotettava avautumista

Tämä tarkoittaa, että jos sivustolla on aikakatkaisu sivu, se ei voi tehdä mitään, ja sinun täytyy odottaa, että ajastettu sivu latautuu.

Et voi tehdä sitäkään, useita ajax-samanaikaisia pyyntöjä samalla sivulla, et voi tehdä sitä, lähetä viestikyselyt.



Yhteenvetona:Jos otat istunnon pyynnölle, jos et tuo istuntoa pyyntöön, yllä mainittu tilanne ei synny

Ratkaisu:

Lisätty SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly) -ominaisuus ohjaimen ohjaimeen

Muistiinpano:

Pakollinen tarkoittaa, että pyydät yksinoikeudella lukittua Session-järjestelmää (eli ei saman sessionID:n pyyntöjen rinnakkaista käsittelyä)
ReadOnly tarkoittaa, että pyydät ei-yksinoikeudellista lukitusta Sessionille (eli pyyntösi täytyy silti odottaa, että yksinoikeudella lukittu pyyntö valmistuu, mutta voit käsitellä ei-yksinoikeudellisia pyyntöjä lukitukset rinnakkain. Sinun tehtäväsi on kuitenkin varmistaa, ettei koodisi kirjoita Sessionille. Se ei välttämättä ole kehikon valvonnassa)
Vaadittu tarkoittaa pyytämääsi session mutexia (eli ei ole vaatimusta käsitellä samaa SessionID:tä rinnakkain).

ReadOnly tarkoittaa, että pyytämäsi istunto on ei-yksinoikeudellinen lukitus (eli pyyntösi joutuu silti odottamaan valmistumista, eli pyynnön on käsiteltävä rinnakkaisella ei-eksklusiivisella lukolla). Mutta haluat varmistaa, ettei koodisi kirjoita istuntoja. Sitä ei tarvitse suorittaa kehysjärjestelmässä)





Edellinen:CEF: Upota Chrome asiakkaalle
Seuraava:HTTP-virhe 503. Palvelu ei ole saatavilla.
Julkaistu 6.7.2018 11.53.31 |
WebFormsissa lisää aspx:n yläreunassa olevan sivun perään (lataa vain se estosivu):

EnableSessionState="Vain luettava"
 Vuokraisäntä| Julkaistu 14.7.2019 20.34.17 |
Useimmat verkkokehitykset käyttävät istuntoja istuntojen tallentamiseen, mutta istuntojen käyttö asp.net sovelluksissa voi vaikuttaa merkittävästi verkkosovellusten suorituskykyyn. Miksi ja mikä siihen vaikuttaa, analysoidaan alla

MSDN:n selitys samanaikaisista pyynnöistä ja istunnosta toteaa:

Samanaikaiset pyynnöt ja istunnon tila
Pääsy ASP.NET istuntotilaan on istuntokohtainen, eli jos kaksi eri käyttäjää lähettää pyynnön samanaikaisesti, pääsy jokaiseen yksittäiseen istuntoon myönnetään samanaikaisesti. Jos kuitenkin kaksi samanaikaista pyyntöä koskevat samaa istuntoa (käyttäen samaa SessionID-arvoa), ensimmäinen pyyntö saa yksinoikeuden istuntotietoihin. Toinen pyyntö suoritetaan vasta ensimmäisen pyynnön jälkeen. (Jos yksinoikeudellinen lukitus istuntotietoihin vapautetaan, koska ensimmäinen pyyntö ylittää lukituksen aikakatkaisun, toinen istunto saa myös pääsyn.) Jos asetat EnableSessionState-arvoksi @Page-direktiivissä ReadOnly-tilaksi, vain luku -istuntotietopyynnöt eivät johda yksinoikeudelliseen lukitukseen istuntotietoihin. Kuitenkin vain luku -pyynnöt istuntotietoihin saattavat silti joutua odottamaan, kunnes lukitus avautuu luku-/kirjoituspyynnöstä, jonka istuntotiedot asettavat.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com