Ajout d’un cache
Ajout d’un système de cache de la génération de l’index des documents comme de la liste d’autoblog stockés respectivement dans `/docs.cache` et `/autoblogs.cache`. La durée est paramétrable avec les variables `DOCS_CACHE_DURATION` et `AUTOBLOGS_CACHE_DURATION`, à ajouter dans `config.php.example`. Merci au Hollandais volant pour cette astuce qui réduit par trois le temps de génération du code d’`index.php` et considérablement la charge processeur ;) <http://lehollandaisvolant.net/tuto/pagespd/#php-statik>.
This commit is contained in:
parent
732a014256
commit
5754acee18
1 changed files with 106 additions and 59 deletions
71
index.php
71
index.php
|
@ -265,8 +265,8 @@ if (isset($_GET['export'])) {
|
|||
|
||||
foreach($subdirs as $unit) {
|
||||
if(is_dir($unit)) {
|
||||
$unit=substr($unit, 2);
|
||||
$ini = parse_ini_file($unit.'/vvb.ini');
|
||||
$unit=substr($unit, 2);
|
||||
$config = new stdClass;
|
||||
|
||||
foreach ($ini as $key=>$value) {
|
||||
|
@ -825,7 +825,7 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
<input type="submit" value="Créer" />
|
||||
</form>
|
||||
</section>
|
||||
<?php }
|
||||
<?php }
|
||||
if(ALLOW_NEW_AUTOBLOGS_BY_OPML_FILE == TRUE) { ?>
|
||||
<section class="form" id="add_opmlfile">
|
||||
<header>
|
||||
|
@ -840,7 +840,7 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
<input type='submit' value='Importer' />
|
||||
</form>
|
||||
</section>
|
||||
<?php }
|
||||
<?php }
|
||||
if(ALLOW_NEW_AUTOBLOGS_BY_OPML_LINK == TRUE) { ?>
|
||||
<section class="form" id="add_opmllink">
|
||||
<header>
|
||||
|
@ -855,7 +855,7 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
<input type="submit" value="Envoyer" />
|
||||
</form>
|
||||
</section>
|
||||
<?php }
|
||||
<?php }
|
||||
if(ALLOW_NEW_AUTOBLOGS_BY_BUTTON == TRUE) { ?>
|
||||
<section class="form" id="add_bookmark">
|
||||
<header>
|
||||
|
@ -866,8 +866,14 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
</section>
|
||||
<?php } ?>
|
||||
</section>
|
||||
<?php } ?>
|
||||
<?php
|
||||
<?php }
|
||||
$fichierCache = 'docs.cache';
|
||||
// si la page n'existe pas dans le cache ou si elle a expiré (durée paramétrable)
|
||||
// on lance la génération de la page et on la stoke dans un fichier
|
||||
if (@filemtime($fichierCache)<time()-(DOCS_CACHE_DURATION)) {
|
||||
// on démarre la bufferisation : rien n'est envoyé au navigateur
|
||||
ob_start();
|
||||
|
||||
$directory = DOC_FOLDER;
|
||||
$docs = array();
|
||||
if( is_dir($directory) && !file_exists($directory . '.disabled') ) {
|
||||
|
@ -879,14 +885,14 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
$docs[] = array('<a href="'. preg_replace('~ ~', '%20', $unit) . '">'. substr($unit, (strrpos($unit, '/')) + 1 ) .'</a>', $size);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!empty( $docs )) {
|
||||
echo '<section id="docs">
|
||||
echo ' <section id="docs">
|
||||
<header>
|
||||
<h2>Autres documents</h2>
|
||||
</header>
|
||||
|
||||
<ul>'."\n";
|
||||
|
||||
foreach( $docs as $value ) {
|
||||
$str = $value[0];
|
||||
if ( !empty($value[1]) ) {
|
||||
|
@ -894,9 +900,25 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
}
|
||||
echo ' <li>'. $str . "</li>\n";
|
||||
}
|
||||
|
||||
echo ' </ul>
|
||||
</section>'."\n";
|
||||
}
|
||||
}
|
||||
// on recuperre le contenu du buffer
|
||||
$contenuCache = ob_get_contents();
|
||||
ob_end_flush(); // on termine la bufferisation
|
||||
$fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
|
||||
if ($fd) {
|
||||
fwrite($fd,$contenuCache); // on écrit le contenu du buffer dans le fichier cache
|
||||
fclose($fd);
|
||||
}
|
||||
// sinon le fichier cache existe déjà, on ne génère pas la page
|
||||
// et on envoie le fichier statique à la place
|
||||
} else {
|
||||
readfile($fichierCache); // affichage du contenu du fichier
|
||||
echo ' <!-- Section « documents » (présente uniquement si non vide) servie par le cache -->'."\n"; // et un petit message
|
||||
}
|
||||
?>
|
||||
<section id="autoblogs">
|
||||
<header>
|
||||
|
@ -909,8 +931,16 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
<a href="?exportopml">export<sup>OPML</sup></a>
|
||||
</nav>
|
||||
|
||||
<ul>
|
||||
<?php
|
||||
$fichierCache = 'autoblogs.cache';
|
||||
// si la page n'existe pas dans le cache ou si elle a expiré (durée paramétrable)
|
||||
// on lance la génération de la page et on la stoke dans un fichier
|
||||
if (@filemtime($fichierCache)<time()-(AUTOBLOGS_CACHE_DURATION)) {
|
||||
// on démarre la bufferisation : rien n'est envoyé au navigateur
|
||||
ob_start();
|
||||
|
||||
echo '<ul>
|
||||
';
|
||||
$subdirs = glob(AUTOBLOGS_FOLDER . "*");
|
||||
$autoblogs = array();
|
||||
foreach($subdirs as $unit) {
|
||||
|
@ -920,7 +950,6 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
$ini = parse_ini_file(ROOT_DIR . '/' . $unit . '/vvb.ini');
|
||||
if($ini) {
|
||||
$config = new stdClass;
|
||||
$unit=substr($unit, 2);
|
||||
foreach ($ini as $key=>$value) {
|
||||
$key = strtolower($key);
|
||||
$config->$key = $value;
|
||||
|
@ -952,9 +981,27 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
|
|||
}
|
||||
}
|
||||
echo $autoblogs_display;
|
||||
?>
|
||||
|
||||
echo '
|
||||
</ul>
|
||||
<?php echo "<p>".count($autoblogs)." autoblogs hébergés</p>"; ?>
|
||||
<p>'.count($autoblogs).' autoblogs hébergés</p>';
|
||||
|
||||
// on recuperre le contenu du buffer
|
||||
$contenuCache = ob_get_contents();
|
||||
ob_end_flush(); // on termine la bufferisation
|
||||
$fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
|
||||
if ($fd) {
|
||||
fwrite($fd,$contenuCache); // on écrit le contenu du buffer dans le fichier cache
|
||||
fclose($fd);
|
||||
}
|
||||
// sinon le fichier cache existe déjà, on ne génère pas la page
|
||||
// et on envoie le fichier statique à la place
|
||||
} else {
|
||||
echo '<!-- Début du cache -->'."\n".' '; // un message de début
|
||||
readfile($fichierCache); // affichage du contenu du fichier
|
||||
echo "\n".' <!-- Fin du cache -->'."\n"; // et un petit message
|
||||
}
|
||||
?>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
|
|
Loading…
Reference in a new issue