[TL;DR versija: naudoja slapukus saugoti async skambinti rezultatai; padaryti pastaruosius async skambinti rezultatai iš karto ir tada patvirtinti jas po puslapio apkrova.]
Aš dirbu SharePoint svetainę klientas kad funkcijos, be kita ko, stilizuoti antrinės navigacijos kurių meniu parinktys yra valdomi per reguliariai senas pasirinktinį sąrašą. Idėja, kad klientas gauna valdyti "savo" svetainės meniu be paveikti ar paveiks jo irtis pasaulinės navigacijos.
(kažkas neįtikėtinai ardomąją apie naują CEWP, kuris atkreipia dėmesį į HTML failą, krovinys šiek tiek CSS ir JS iš esmės pakeisti beveik viską apie svetainės veikimą... bet tai kitai įstaigai)
Šis gana paprastas kodas:
- Palaukite, kol puslapio įkėlimą ir padaryti su async skambinti įkelti meniu elementus sąraše naudojant poilsio ar lists.asmx ar kas
- Naudojant jQuery, dinamiškai užpildyti krūva, jei <Li>'s viduje vienas iš tėvų <UL> (Christian Pinder straipsnyje čia paprasta paaiškinimą apie šį tecnnique)
- Naudoti CSS padaryti visas formatavimas
- Pelno!
Gerklės vietoje čia yra tai, kad kiekvieną kartą, kai kas nors pataiko vieną iš svetainės puslapių, to vartotojo naršyklėje siekiančiam gauti elementus iš sąrašo. Dev baigtas ir testavimas įrodė, ko reikia stabilios ir užpildydamas, uo nebūtina daugiau nei 99% laiko nuo meniu retai keičiasi. Ji taip pat turi keistą UI įtakos, kuri yra paplitusi šioje brave new world hiper ajaxy interneto svetainėse-puslapio teikia ir tik tada meniu padaryti. Tai nervingumas ir blaško dėmesį, mano nuomone. Ir nervingumas. Taigi, Kaupimas talpykloje.
Modifikavau logika thusly:
- Ieškoti slapuką į naršyklę, kuri yra meniu kaip paskutinį kartą skaityti
- Jei nustatyta,, padaryti jį iš karto. Negalima laukti puslapio įkėlimą. (Jums reikia įsitikinkite, kad jūsų HTML yra strategiškai išdėstyti čia, Tačiau tai nėra sunku padaryti).
- Palaukite, kol puslapio įkėlimą ir padaryti su async skambinti įkelti meniu elementus sąraše naudojant poilsio ar lists.asmx ar kas
- Palyginti ką aš prieš slapukas
- Jei jis atitinka, sustoti, sustok
- Kitaip, naudojant jQuery, dinamiškai užpildyti krūva, jei <Li>'s – yra <UL>
- Naudoti CSS padaryti visas formatavimas
- Pelno!
Kai jūs ketinate pasakyti, "Ei! nėra jokių realių buferinės vyksta čia nuo jūs skaitote meniu bet kuriuo atveju kiekvieną kartą.” Ir tu teisus-aš nepateikiu serverio jokios pertraukos. Bet ir nes skambutis yra async ir atsitinka po pradinio puslapio HTML krovinio visiškai sudarytų sąlygas, tai "mano" jautriau reaguoti į vartotojo. Meniu tampa gana daug, kaip puslapio atkreipia. Jei meniu būna, kad pakeitimas, vartotojas yra veikiamas nervingumas iš naujo parengti meniu, bet tik tą vieną kartą.
Yra keletas būdų, kaip padaryti šį spartinimo veiksmingesnę ir padėti atlikti serverio vienu metu:
- Įdėti, kad "slapukų talpyklą" galioja ne trumpiau kaip taisyklė 24 valandų arba kai kurie kiti terminai. Tol, kol nėra pasibaigęs slapuko, Naudokite slapuką 's meniu fotografiją ir niekada hit serveris.
Well... that's viską, kas ateina į galvą šiuo metu :).
Jei kas nors turi kokių nors protingas idėjų čia aš norėčiau žinoti jų.
Ir galiausiai – šis metodas gali būti naudojamas kitų dalykų. Šis klientas puslapyje yra daug dalykų, duomenų valdomas įvairiuose puslapiuose, Daugelis iš jų keičiasi gana retai (pavyzdžiui, kartą per savaitę arba kartą per mėnesį). Jei taikote pagal konkrečias sritis funkcijos, galite pateikti ir kvalifikacijų UI traukimas turinį iš vietos slapukas parduotuvė ir padaryti iš karto. Jis mano greičiau vartotojui, net jei ne serverio bet ciklų. Jūs gali įrašyti serverio ciklų sprendžiant kai kurių sąlygų ir skatina panaikinti šios vietos slapukų talpyklą. Tai visos situacijos ir artsy stuff ir tikrai labiausiai įdomus :).
</pabaigos>
Sekite mane Twitter ne http://www.twitter.com/pagalvin
Max Paul,
Gražus įgyvendinimo, tai kažkas, ką mes naudojame bet naudojome HTML5 vietos saugojimo API vietoj slapukus. Pirmasis diskas buvo kad mums reikia saugoti daugiau nei slapukas gali leisti. Tačiau papildoma nauda yra, kad tai nepadidina naudingosios apkrovos, kadangi slapukai yra siunčiami atgal. Dev požiūriu tai yra labai paprasta naudoti.
Naršyklių nėra tobula bet sąžiningai gana gerai, http://caniuse.com/namevalue-storage .
Jonathan