aika Posted February 24, 2012 Report Share Posted February 24, 2012 API izstrādātājs palūdza kešot atgrieztos datus. Tā kā man teorētiskās zināšanas par kešu nav akadēmiskā līmenī, lūdzu pakonsultējiet kā un vai vispār tas ir iespējams lapā, kurā viss kontents ir dinamisks un tiek salasīts no db. P.S. Metos stāv: <meta http-equiv="expires" content="0" /><pre id="line1"></pre> Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 24, 2012 Report Share Posted February 24, 2012 http://memcached.org/ (http://www.slideshare.net/JustinCarmony/effectice-caching-w-php-caching) Protams nav obligaati jaaizmanto Memcache (piemeeram APC (http://uk.php.net/apc) vareetu jau buut pieejams by default), bet princips paliek tas pats... Piedevaam ja tas ir API, tad vari rezultaatus saglabaat kaut vai savaa DB. Vienkaarshi netaisi pie katra lietotaaju pieprasiijuma, vaicaajumu pie API. Pieglabaa rezultaatus uz kaadu laiku. Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted February 24, 2012 Report Share Posted February 24, 2012 Ja web lapa, glabā iekš localstorage (http://www.w3schools.com/html5/html5_webstorage.asp). Quote Link to comment Share on other sites More sharing options...
aika Posted February 24, 2012 Author Report Share Posted February 24, 2012 vopšem ar kešu (normālā izpratnē) tam nav nekāda sakara! glabāsim vien db, tā būs visērtāk. Quote Link to comment Share on other sites More sharing options...
codez Posted February 24, 2012 Report Share Posted February 24, 2012 Visdrīzāk kešošana nozīmē to, ka pieprasītie dati tiek saglabāti operatīvajā atmiņā, lai pieprasot tos otreiz, ātrāk varētu atgriezt. Teiksim, pieprasa datus A ar id=1234, tu nolasi no mysql, atgriez pieprasītājam, bet papildus saglabā operatīvajā atmiņa. Kad nākošreiz datus atkal pieprasīs, ņem no operatīvās atmiņas. Šādi var atsevišķos gadījumos servera noslodzi samazināt vairāk kā 10 reizes. Quote Link to comment Share on other sites More sharing options...
aika Posted February 24, 2012 Author Report Share Posted February 24, 2012 atgrirezīsimies pie topika sākuma: API izstrādātājs palūdza kešot - man, lietotājam, kas pašos pamatos nav pareizi, jo es nevaru pieprasījumu nokešot (atšķirībā no viņa)! Quote Link to comment Share on other sites More sharing options...
codez Posted February 24, 2012 Report Share Posted February 24, 2012 Sk., tas visdrīzāk tas nozīmē, ka, ja tev vajag kaut kādus datus, tad tu viņus nevis katru reizi pieprasi caur API, bet kešo savā pusē un pieprasi tikai tos, kas nav nokešoti pie tevis. Quote Link to comment Share on other sites More sharing options...
briedis Posted February 24, 2012 Report Share Posted February 24, 2012 (edited) Es sākotnēji sapratu šādu scenāriju, kā es daru arī twitter gadījumā. Lūdzu, ļoti vienkāršs piemērs: /** * Iegūstam api datus. Rezultāti tiek kešoti 5 minūtes. * @param string $url Api saite * @return string dati */ function api($url){ // Mēģinam ielasīt no db keša $dati = DB::getData('cache_' . $url); // Pārbaudam vai dati ir iekešoti un tie vēl ir derīgi if($dati && $dati['timeout'] < time()){ // Atgriežam datus, jo tie vēl ir derīgi return $dati['saturs']; } // Dati nav derīgi, veicam api pieprasījumu $new_dati = file_get_contents($url); // Saglabājam datubāzē iegūtos datus ar derīgumu 5 minūtes DB::setData('cache_' . $url, $new_dati, time() + 5 * 60); // Atgriežam iegūtos datus return $new_dati; } Edited February 24, 2012 by briedis Quote Link to comment Share on other sites More sharing options...
aika Posted February 24, 2012 Author Report Share Posted February 24, 2012 NU jā jā! Piemērs pareizs un tā arī lietojams. Es iedomājos kāda slodze ir no visiem tiem dr.lv, fbook un twitter spraudņiem uz attiecīgajiem serveriem. Galu galā tie spraudņi ir teju vai ne katrā lapā... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.