[TL;DR versio: käytä evästeitä vanhempi puhelut tulokset; tekevät viime vanhempi puhelut tulokset välittömästi ja vahvistaa niitä jälkeen sivun lataus.]
Olen työskennellyt SharePoint intranet-sivustossa asiakas että ominaisuudet, muun muassa, tyylitelty toissijaiseen selailuun jonka valikkovaihtoehdot hallinnoidaan kautta säännöllisesti vanha mukautetun luettelon. Ajatuksena on, että asiakas saa hallita "niiden" sivuston valikko vaikuttamatta tai sairastumatta maailmanlaajuisen satelliittinavigointijärjestelmän ojensi sen.
(on jotain uskomattoman kumouksellista lisäämisestä CEWP, joka viittaa HTML-tiedosto joka lataa CSS ja JS perusteellisesti lähes kaikki sivuston käytös... mutta se on toiseen virkaan)
Melko yksinkertainen koodi:
- Odota, sivu latautunut ja tehdä asynkroninen soittaa lataamaan valikkovaihtoehtojen luettelosta, käyttäen loput tai lists.asmx tai mitä tahansa
- Käyttäen jQuery, dynaamisesti täyttää joukko jos <Li>: n sisällä vanhempi <UL> (Christian Pinder artikkelissa tässä yksinkertainen selitys tähän tecnnique)
- Käytä CSS tehdä kaikki muotoilut
- Voitto!
Kipeä paikalla täällä on aina joku osuu sivuston sivut, käyttäjän selain ulottuu saada kohteita luettelosta. Kun dev on valmis ja testaus on osoittanut asiat on vakaa ja täydellinen, Tämä kutsu on tarpeetonta yli 99% aikaa, koska valikko harvoin muuttuu. On myös outo UI vaikuttaa, joka on yleinen uudessa uljaassa maailmassa hyper ajaxy verkkosivujen – kohdistuksessa ja vasta sitten valikko tehdä. Se on hermostunut ja häiritseviä mielestäni. Ja hermostuneisuus. Niin, välimuistiin.
Olen muuttanut logiikan thusly:
- Etsi evästeen selaimessa, joka sisältää valikon olen viimeksi lukenut
- Jos löytyy, tehdä välittömästi. Älä odota hotellipoika jotta lopettaa lastaus. (Haluat Varmista, että HTML on strategisesti sijoitettu tähän, mutta se ei ole vaikea tehdä).
- Odota, sivu latautunut ja tehdä asynkroninen soittaa lataamaan valikkovaihtoehtojen luettelosta, käyttäen loput tai lists.asmx tai mitä tahansa
- Vertaa, mitä olen saanut vastaan evästeen
- Jos se vastaa, Seis
- Muuten, käyttäen jQuery, dynaamisesti täyttää joukko jos <Li>on tässä <UL>
- Käytä CSS tehdä kaikki muotoilut
- Voitto!
Jotkut teistä tulevat sanomaan, "Hei! ei ole todellista caching menossa täällä, kun luet menu joka tapauksessa joka kerta, kun.” Ja olet oikeassa-en anna palvelimen kaikenlaista tauko. Mutta koska puhelu asynkronisen ja tapahtuu jälkeen sivun alkuperäinen HTML payload täysin tekee, "tuntuu" enemmän altis jotta käyttäjä. Valikko tekee melko sivun lähestyessä. Jos valikon tapahtuu muutos, käyttäjä joutuu hermostunut uudelleen piirtää valikko, mutta vain tämän yhden kerran.
Olemassa joitakin keinoja tehostaa tämä välimuisti ja auttaa palvelimelle samaan aikaan:
- Sisältö "cookie cache" on voimassa vähintään 24 tuntia tai muut aikataulua. Niin kauan kuin ei ole vanhentunut eväste, käyttää cookie's menu tilannevedosta ja koskaan osuma palvelimen.
No... se on kaikki mitä tulee mieleen juuri nyt :).
Jos joku on mitään viisaita ajatuksia tästä olisi kiva tietää ne.
Ja lopuksi-tätä tekniikkaa voidaan käyttää muita juttuja. Tämän asiakkaan sivulla on monia dataan perustuva asioita eri sivuille, Monet niistä muuttuvat melko harvoin (kerran viikossa tai kerran kuukaudessa). Jos laadit tietyillä aloilla toiminnallisuutta, Voit antaa herkemmin UI vetämällä sisältöä paikallisen evästeen Storesta ja tekee välittömästi. Tuntuu nopeammin käyttäjälle, vaikka ei tallennetaan palvelimen mitään sykliä. Voit voi Tallenna palvelimen sykliä päättäessään joitakin edellytyksiä ja laukaisee mitätöidä paikallisen evästeen välimuistin. Thats kaikki tilannekohtaista ja muka juttuja ja todella hauskaa :).
</loppu>
Noudata minut viserrys http://www.twitter.com/pagalvin
HI-Paul,
Hieno toteutus, että käytämme mutta evästeet sijasta käyttää HTML5 paikallisen tallentamisen API. Ensimmäinen asema oli, että me tallentaa enemmän kuin evästeen avulla. Mutta lisäetuna on, että se ei lisää payloads, Evästeet ovat lähettäneet edestakaisin. Dev näkökulmasta on helppo käyttää.
Selaimen tuki ei ole täydellinen, mutta rehellisesti sanottuna melko hyvä, http://caniuse.com/namevalue-storage .
Jonathan