source: spip-zone/_plugins_/varnish/varnish_pipelines.php @ 46117

Last change on this file since 46117 was 46117, checked in by fil@…, 10 years ago

plugin permettant d'optimiser la relation SPIP-Varnish ; cf. http://zzz.rezo.net/Interfacer-Varnish-SPIP.html

File size: 1.5 KB
Line 
1<?php
2
3####### insert_head n'est pas bon car c'est le meme head pour toutes les pages
4# => affichage_final pour inserer le head
5# => affichage_entetes_final pour envoyer des messages à varnish
6
7if (!defined("_ECRIRE_INC_VERSION")) return;
8
9// Vider le cache implique une demande de purge varnish
10if (isset($_GET['exec']) AND $_GET['exec'] == "admin_vider")
11        @header('X-Varnish-Purge: *');
12
13
14// Donner a varnish d'eventuelles instructions de mise en cache
15function varnish_affichage_entetes_final($entetes) {
16        # signaler a varnish s'il peut conserver la page, et pour quelle durée
17        # sachant qu'on saura l'invalider si besoin
18
19        # Certaines pages contenant du PHP peuvent vouloir rester dynamiques
20        # * si elles ont une #SESSION ça ne pose pas de problème (varnish respectant
21        #   le cookie du visiteur)
22        # * par defaut, on autorise varnish a les cacher pour une duree = #CACHE
23        # * si on veut bypasser ce default, utiliser
24        #    #HTTP_HEADER{X-Varnish-TTTL: xxx}
25        if (!isset($entetes['X-Varnish-Ttl']))
26                $entetes['X-Varnish-Ttl'] = $entetes['X-Spip-Cache'];
27
28
29        // Apparition d'un nouvel article post-date ?
30        // on applique ici la logique de public/cacher:cache_valide()
31        if ($GLOBALS['meta']['post_dates'] == 'non'
32        AND isset($GLOBALS['meta']['date_prochain_postdate'])
33        AND time() > $GLOBALS['meta']['date_prochain_postdate']) {
34                spip_log('Un article post-date invalide le cache');
35                include_spip('inc/rubriques');
36                ecrire_meta('derniere_modif', time());
37                calculer_prochain_postdate();
38                $entetes['X-Varnish-Purge'] = '*';
39        }
40
41        return $entetes;
42}
43
44?>
Note: See TracBrowser for help on using the repository browser.