cachare sito in php

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao a tutti,
mi piacerebbe capire come posso cachare le pagine del mio sito in php...

qualcuno mi sa dire dove posso prendere spunto o capire come e da dove iniziare ? il sito tra l'altro e dinamico, non so se in questo caso la cosa sia diversa

grazie a tutti
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
ho trovato questo articolo: https://www.mrw.it/php/classe-gestione-cache-pagine-dinamiche_11660.html

ma stranamente non è spiegato molto bene come solitamente sul Vostro sito


la classe ma non dice se va inserita in pagina, oppure se bisogna recuperarla con un require o include, tra l'altro da i parametri da mettere prima e dopo ma anche qui non fa capire se e come includerla ...

qualcuno può gentilmente illuminarmi :)

grazie

PHP:
class php_cache{
  var $durata;
  var $cache_url;
  var $nome_pagina;
 
  /*
  Costruttore - i parametri sono:
  1) i minuti di vita della cache
  2) il percorso della cartella di cache
  */
  function __construct($minuti,$cartella) {
   $this->durata = intval($minuti) * 60;
   $this->cache_url = rtrim($cartella,'/').'/';
  }
 
  // Funzione di start della cache
  function start() {   
   $this->nome_pagina = $this->cache_url.''.$this->paginaCorrente();
   if (file_exists($this->nome_pagina) && ((time() - $this->durata) < filemtime($this->nome_pagina)))
   {
     echo file_get_contents(md5($this->nome_pagina));
     exit;
   }else{
     ob_start();
   }
  }
 
  // Funzione di chiusura della cache
  function stop() {
   $file = fopen($this->nome_pagina, 'w');
   fwrite($file, ob_get_contents());
   fclose($file);
   ob_end_flush();   
  }
 
  // Metodo che restituisce il nome della pagina [eventuali parametri compresi]
  function paginaCorrente() {
   $pagina_corrente = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
   $pezzi = explode('/',$pagina_corrente);
   $pagina_corrente = $pezzi[count($pezzi)-1];
   return md5($pagina_corrente);
  }
}

parametri da mettere prima e dopo

$cache = new php_cache(10,'cache/');
$cache->start();

// segue il codice php/html
// ...
// ...

$cache->stop();
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
L'inclusione non cambia nulla alla funzionalità della classe, serve solo a non dover ripetere la stessa cosa per ogni pagina del sito, quindi se di intero sito si tratta, ma anche di singola pagina, crei un file ad arte con quella classe dentro e poi la includi la dove devi utilizzarla.
Per il resto mi pare chiaro, prima la metti nel file ( direttamente o via inclusione, scegli tu ) poi la richiami, la inizializzi con lo start() e dopo tutto il codice PHP/HTML che forma la tua pagina, gli dai lo stop().
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao grazie mille per la risposta @MarcoGrazia
ho fatto cosi ma sembra non funzionare :(

PHP:
<?php
require "cache-page.php" ;
$cache = new php_cache(10,'cache/');
$cache->start();

?>
<!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7 no-js" lang="en-US">
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8 no-js" lang="en-US">
<![endif]-->
<!--[if !(IE 7) | !(IE 8)  ]><!-->
<html lang="en" class="no-js">
<head>


----------

</html>
<?php

$cache->stop();

?>


la classe l'ho messa in cache-page.php

<?php

class php_cache{
  var $durata;
  var $cache_url;
  var $nome_pagina;

  /*
  Costruttore - i parametri sono:
  1) i minuti di vita della cache
  2) il percorso della cartella di cache
  */
  function __construct($minuti,$cartella) {
   $this->durata = intval($minuti) * 60;
   $this->cache_url = rtrim($cartella,'/').'/';
  }

  // Funzione di start della cache
  function start() {
   $this->nome_pagina = $this->cache_url.''.$this->paginaCorrente();
   if (file_exists($this->nome_pagina) && ((time() - $this->durata) < filemtime($this->nome_pagina)))
   {
     echo file_get_contents(md5($this->nome_pagina));
     exit;
   }else{
     ob_start();
   }
  }

  // Funzione di chiusura della cache
  function stop() {
   $file = fopen($this->nome_pagina, 'w');
   fwrite($file, ob_get_contents());
   fclose($file);
   ob_end_flush();
  }

  // Metodo che restituisce il nome della pagina [eventuali parametri compresi]
  function paginaCorrente() {
   $pagina_corrente = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
   $pezzi = explode('/',$pagina_corrente);
   $pagina_corrente = $pezzi[count($pezzi)-1];
   return md5($pagina_corrente);
  }
}

?>
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Mha!
A leggere il codice, vedo che la pagina semplicemente viene salvata con l'hash del nome ( in md5 ) e poi quando ripassi viene confrontato il tempo di creazione della stessa in modo da riferirsi sempre a quella copia se non è passato il tempo che gli hai dato con start(). Che poi il caching sostanzialmente è tutto qui :D
Dopo di che, se il tempo è passato la risalva con un altro hash nome md5().
Difetti:
  • un sistema di cache non dovrebbe fare il caching di pagine statiche, non serve a nulla, anzi è controproducente;
  • è semplicistico, il che non dovrebbe essere proprio un difetto;
Per vedere se funziona non dovresti provarlo in locale, a occhio nudo non vedi le differenze, inoltre dovresti fare un ping verso il sito senza caching e con caching per vedere se funziona.
 

Achille610@

Utente Attivo
18 Apr 2017
75
0
6
50
Ciao,
questa cache non l'ho messa su una pagina statica, ma bensi nelle pagine dinamiche del sito, proprio perchè era fatta per quello.
Ho provato con un tool che testa la cache e non mi dava nessuna cache :(

Per il resto non mi da errori quindi proverò a fare un ping come dici tu

grazie mille
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Potresti provare a sfruttare il sistema di caching di un qualche templare engine. .. Smarty, twig etc. ....
Smarty->cachetime=300;
Sarebbe una cache di 5 minuti....
 
Discussioni simili
Autore Titolo Forum Risposte Data
glm2006ITALY Guida Il proprio sito WordPress è professionale? WordPress 0
shelbystudio cliente moroso: posso disattivare email e sito in attesa del pagamento? Leggi, Normative e Fisco 3
R Messaggio apertura sito WordPress 4
E Benvenuti sul Nuovo Sito: Explore Como Lake! Presenta il tuo Sito 0
R Aiuto ripristino sito web Presentati al Forum 0
A Vendo sito web news economia, finanza, immobiliare online da pochi mesi Compravendita siti e domini 0
D [COMPRO/CERCO] GUEST POST o scambio link per sito di Spiritualità ed Esoterismo. Vendere e Acquistare pubblicita' online 0
M Vendo il mio sito web teknosurfng.com, che trasmette nel campo della tecnologia Compravendita siti e domini 0
G Perché il mio sito su Google news fa vedere le immagini degli articoli la mia foto profilo? WordPress 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
M Analisi sito per pulire codice inutile HTML e CSS 1
C iscrizioni malevole su sito off-line WordPress 6
M [cerco webmaster] sito web da modificare Offerte e Richieste di Lavoro e/o Collaborazione 0
F Animazione testo sito web diminuire grandezza di un testo allo scroll Javascript 0
N Vendo sito web di casino online con 1000 giochi Compravendita siti e domini 0
R Recupero di permalink di un sito che è stato eliminato per errore WordPress 5
A Web master per semplice sito web Offerte e Richieste di Lavoro e/o Collaborazione 2
G VENDO sito completo Compravendita siti e domini 0
N Creazione sito web senza Partita IVA (Era: mettersi in regola) Leggi, Normative e Fisco 1
V dati scomparsi dal sito HTML e CSS 3
E Sito violato, file modificati, cartelle create WordPress 1
A [Cerco][Retribuito] Correzioni errori sito web Offerte e Richieste di Lavoro e/o Collaborazione 3
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
M Memorizzazione temi per le diverse pagine del sito Javascript 1
MarcoGrazia Sistema di news interno al sito PHP 3
M Non ho rinnovato il mio sito su Aruba... Domini 1
G Vi presento il mio sito: Globalmeteo Presenta il tuo Sito 0
F Cerco fotografo per sito abiti da sposa Discussioni Varie 2
Shyson Google search non trova il mio sito SEO e Posizionamento 1
S Sito Wordpress creato in localhost PHP 1
N Consigli SEO per il mio sito di web design SEO e Posizionamento 0
M Normativa sito di rubriche: blog o magazine o altro? Leggi, Normative e Fisco 0
L PHP motore di ricerca nel sito PHP 1
MarcoGrazia Rifacimento sito de Genealogia italiana Presenta il tuo Sito 4
Z Hacker sito ARUBA Sicurezza e Virus 0
Shyson Non mi fa accedere al sito WordPress 12
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 7
R Dubbi trasferimento sito WordPress 1
D Creazione sito e-commerce WP CMS (Content Management System) 0
R Dubbi copia sito CMS (Content Management System) 2
A Consiglio per creazione sito web CMS (Content Management System) 1
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 3
M eliminare padding logo sito HTML e CSS 2
M Come individuare il link sito entrante Google Analytics 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
D Progetto sito Discussioni Varie 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
R inserire video nel sito HTML e CSS 15
C Come caricare foto da google foto ad un sito? Discussioni Varie 1
G cerco: traffico sito, pubblicità condividente post su pagine gruppi Vendere e Acquistare pubblicita' online 0

Discussioni simili