Vreau sa fac cache la un site, nu este o platforma populara sau ceva de genul… Este un script facut de mine, nu am o baza de date continutul este actualizat prin api…
Dupa ce am cautat cateva informatii am gasit acest cod :
<?php
//settings
$cache_ext = '.html'; //file extension
$cache_time = 3600; //Cache file expires afere these seconds (1 hour = 3600 sec)
$cache_folder = 'cache/'; //folder to store Cache files
$ignore_pages = array('', '');
$dynamic_url = 'http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING']; // requested dynamic page (full url)
$cache_file = $cache_folder.md5($dynamic_url).$cache_ext; // construct a cache file
$ignore = (in_array($dynamic_url,$ignore_pages))?true:false; //check if url is in ignore list
if (!$ignore && file_exists($cache_file) && time() - $cache_time < filemtime($cache_file)) { //check Cache exist and it's not expired.
ob_start('ob_gzhandler'); //Turn on output buffering, "ob_gzhandler" for the compressed page with gzip.
readfile($cache_file); //read Cache file
echo '<!-- cached page - '.date('l jS \of F Y h:i:s A', filemtime($cache_file)).', Page : '.$dynamic_url.' -->';
ob_end_flush(); //Flush and turn off output buffering
exit(); //no need to proceed further, exit the flow.
}
//Turn on output buffering with gzip compression.
ob_start('ob_gzhandler');
######## Your Website Content Starts Below #########
?>
<!DOCTYPE html>
<html>
<head>
<title>Page to Cache</title>
</head>
<body>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ut tellus libero.
</body>
</html>
<?php
######## Your Website Content Ends here #########
if (!is_dir($cache_folder)) { //create a new folder if we need to
mkdir($cache_folder);
}
if(!$ignore){
$fp = fopen($cache_file, 'w'); //open file for writing
fwrite($fp, ob_get_contents()); //write contents of the output buffer in Cache file
fclose($fp); //Close file pointer
}
ob_end_flush(); //Flush and turn off output buffering
?>
Ce parere aveti ? Puteti sa-mi dati o idee mai buna ?
Datorita api-ului care este solicitat la fiecare vizita site-ul se misca mai greoi si am nevoie de acest cache
Cache care a fost facut la accesarea mea pe site este afisat tuturor ? sau pentru fiecare utilizator al site-ului este un alt cache care ii este afisat lui ?
Eu îți recomand să o iei foarte băbește și să faci varianta ta de caching. Câteva idei:
Caching presupune să nu regenerezi toată pagina. Asta înseamnă că după ce generezi toată pagina o dată, stochezi undeva rezultatul;
Cea mai la îndemână chestie este ca acel undeva să fie într-un fișier;
Dacă nu faci caching cum trebuie la vizitatorii autentificați s-ar putea să ai o problemă ca unii utilizatori să vadă paginile destinate altor utilizatori;
ob_start & co sunt prietenii tăi;
PS: preferăm să te ajutăm când nu înțelegi sau nu îți iese ceva, nu când „nu merge” ceva găsit online…
M-am gandit la chestia cu logarea ideea este ca nu exista logare pe acel site…
Cum as putea sa ma incurc in ceva in ce n-am facut , cand eu nu stiu de unde sa incep
Apreciez efortul, dar nu la asta m-am incurcat ! Aveam nevoie de o sugestie daca este bun sau nu acest cod
<?php
//settings
$cache_ext = '.html'; //file extension
$cache_time = 3600; //Cache file expires afere these seconds (1 hour = 3600 sec)
$cache_folder = 'cache/'; //folder to store Cache files
$ignore_pages = array('', '');
$dynamic_url = 'http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING']; // requested dynamic page (full url)
$cache_file = $cache_folder.md5($dynamic_url).$cache_ext; // construct a cache file
$ignore = (in_array($dynamic_url,$ignore_pages))?true:false; //check if url is in ignore list
if (!$ignore && file_exists($cache_file) && time() - $cache_time < filemtime($cache_file)) { //check Cache exist and it's not expired.
ob_start('ob_gzhandler'); //Turn on output buffering, "ob_gzhandler" for the compressed page with gzip.
readfile($cache_file); //read Cache file
echo '<!-- cached page - '.date('l jS \of F Y h:i:s A', filemtime($cache_file)).', Page : '.$dynamic_url.' -->';
ob_end_flush(); //Flush and turn off output buffering
exit(); //no need to proceed further, exit the flow.
}
//Turn on output buffering with gzip compression.
ob_start('ob_gzhandler');
######## Your Website Content Starts Below #########
?>
<!DOCTYPE html>
<html>
<head>
<title>Page to Cache</title>
</head>
<body>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ut tellus libero.
</body>
</html>
<?php
######## Your Website Content Ends here #########
if (!is_dir($cache_folder)) { //create a new folder if we need to
mkdir($cache_folder);
}
if(!$ignore){
$fp = fopen($cache_file, 'w'); //open file for writing
fwrite($fp, ob_get_contents()); //write contents of the output buffer in Cache file
fclose($fp); //Close file pointer
}
ob_end_flush(); //Flush and turn off output buffering
?>
Unde trebuie pus si sa evite incarcarea celor logati si alte chestii dinastea le stiu si eu… Pe mine ma interesa daca codul isi face treaba bine sau mai trebuiesc aduse adjustari… nu voiam sa-mi dai cod direct nici alte chestii… Nu stiu ce tot intelegi tu aici de imi spui ca ai prefera sa ma ajuti daca m-am incurcat la vreun pas…
Se presupunem ca acel cod este facut de mine, ce sfaturi imi poti da pentru inbunatatirea lui…asta voiam sa aud , nu aberatiile tale ca la fiecare post…
Uite, ca să nu te mai deranjez cu toate aberațiile mele, îți pun la dispoziție trei zile să citești regulamentul, în special această secțiune:
Sunt descurajate discuțiile în care se cere o soluție, nu o explicație. Cu toții suntem aici să învățăm, prin urmare este important - în primul rând - să înțelegem o problemă și abia apoi să primim o soluție. Nu invers.