Nabaga cilvēks ir kešatmiņā, JavaScript

[TL;DR versija: izmanto sīkdatnes, lai saglabātu async sarunu rezultāti; padarīt rezultāti pēdējos async aicina nekavējoties un pēc tam apstiprināt tos pēc lapas ielādes.]

Es esmu strādājusi par SharePoint iekštīkla vietnes klientu, ka līdzekļi, cita starpā, stilizētu sekundārās navigācijas, kuru izvēlnes opcijas tiek pārvaldīti regulāru veco pielāgotu sarakstu.  Ideja ir tāda, ka klients saņem, neietekmējot vai slimas ar globālās navigācijas uzdeva to kontrolēt "viņu" portāla izvēlne.

(tur ir kaut kas ārkārtīgi graujošām par pievienojot CEWP, kas norāda uz HTML failu, kas ielādē daži CSS un JS pašos pamatos mainīt gandrīz visu par vietņu uzvedība... bet tas ir citā amatā)

Šī ir diezgan vienkāršs kods:

Iekaisis vietas šeit ir tas, ka katru reizi, kad kāds pieskaras viens no vietnes lapas, šī lietotāja web pārlūkprogrammā ir sasniedzamas, lai saņemt vienumus no saraksta.  Pēc tam, kad ir pabeigta dev un pārbaude ir pierādījusi lietas ir stabilas un pabeigt, šo aicinājumu nav vajadzīga vairāk nekā 99% laika, jo reti maina izvēlni.  Tai arī dīvaini UI ietekmē, kas ir kopīgs šo drosmīgs jaunu pasauli, hiper ajaxy tīmekļa vietnes-lappuse tiek atveidota, un tikai tad izvēlnē padarīt.  Tas ir nervozs un uzmanību, manuprāt.  Un nervozs. Tik, kešatmiņā. 

Loģika ir rediģēts thusly:

  • Meklēt cookie pārlūks, kas satur izvēlnes, kā es to izlasītu pēdējās
    • Ja konstatēts, padarīt to nekavējoties.  Negaidiet, lai lapas lejuplādēšanas pabeigšanai.  (Jums ir jāpārliecinās, ka jūsu HTML stratēģiski novietoti šeit, bet tas nav grūti izdarāms).
  • Pagaidiet, līdz lappuse ir lejuplādēšanas pabeigšanai un veikt zvanu izvēlnes elementus sarakstā, izmantojot atpūtas vai lists.asmx vai kāds ielādējiet async
  • Salīdzināt to, ko es saņēmu pret cookie
    • Ja tas atbilst, apstājieties
    • Pretējā gadījumā, izmantojot jQuery, dinamiski aizpildīt ķekars, ja <Li>ir programmā <UL>
  • Izmantot CSS darīt visu formatējumu
  • Peļņa!

Daži no jums gatavojas teikt, "Hei! nav, nav īsta caching notiek šeit, jo jūs lasāt izvēlnes, tomēr katru reizi, kad.”  Un tev taisnība-es neesmu dodot serveris nekādu pārtraukumu.  Bet jo async izsaukums un notiek pēc sākotnējās lappuses HTML komerckrava pilnībā padara, to "jūtas" vairāk reaģē uz lietotāja.  Izvēlnes padara diezgan daudz kā lapa vērš.  Ja notiek izmaiņas izvēlnes, lietotājs ir pakļauts nervozitātes atkārtoti izdarīt no izvēlnes, bet viena vienīga reize.

Ir daži veidi, kā padarīt šo kešatmiņā efektīvākas un izpalīdzēt serverī vienlaikus:

  • Ielikt "sīkfailu kešatmiņa" ir derīga vismaz kārtulā 24 stundas vai kādu citu laika periodu. Kamēr nav beidzies sīkfailu, izmantojiet izvēlni sīkfailu momentuzņēmumu un nekad hit servera.

Nu... tas ir viss, kas nāk prātā tieši tagad :). 

Ja kāds ir jebkurš gudrs idejas šeit labprāt vēlētos zināt tos.

Un visbeidzot – šo tehniku var izmantot arī citas lietas.  Šī klienta lapa ir vairākas lietas, datu vadītas dažādās lappusēs, daudzi no viņiem mainās samērā reti (piemēram, reizi nedēļā vai reizi mēnesī).  Ja jums mērķis konkrētas jomas funkcionalitāti, jūs varat dot vairāk atsaucīgāku UI, velkot saturu no vietējo Sīkfails uzglabāt un padarot nekavējoties.  Tā uzskata ātrāk lietotājs, pat tad, ja nav krājat naudu serverim jebkurā cikliem.  Jums var saglabāt serverī cikli, izlemjot par dažiem nosacījumiem un trigeriem par spēkā neesošiem šī vietējā sīkfailu kešatmiņa.  Tas ir visas situācijas un artsy stuff, un tiešām visvairāk jautru :). 

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Viena doma parNabaga cilvēks ir kešatmiņā, JavaScript

  1. Jonathan Roussel

    Hi Paul,

    Jauki īstenošanu, tas ir kaut kas, ko mēs izmantojam, bet mēs izmantojām HTML5 lokālās krātuves API nevis sīkfailus. Pirmais brauciens bija mums vajadzēja glabāt vairāk nekā var atļaut sīkfailu. Bet priekšrocība ir tā, ka tas nepalielina celtspēja, tā kā sīkdatnes tiek nosūtīti turp un atpakaļ. No dev viedokļa tas ir ļoti viegli izmantot.
    Pārlūkprogrammu atbalsts nav perfekta, bet godīgi gluži labi, http://caniuse.com/namevalue-storage .

    Jonathan

    Atbilde

atstāt atbildi

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *