Jump to content
php.lv forumi

Kešošana


aika

Recommended Posts

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>

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by briedis
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...