source: spip-zone/_plugins_/fastcache/fastcache_options.php @ 97235

Last change on this file since 97235 was 38292, checked in by fil@…, 11 years ago

suite de http://trac.rezo.net/trac/spip/changeset/15698 sur l'entete type 404 (ne comportant pas de ':')

File size: 2.5 KB
Line 
1<?php
2
3# pipeline affichage_final pour stocker les pages dans le cache rapide
4if (!defined("_ECRIRE_INC_VERSION")) return;
5
6function Fastcache_versionie($page) {
7        if (strpos($page, 'BackgroundImageCache')
8        OR !$msiefix = charger_fonction('msiefix', 'inc', true))
9                return $page;
10       
11        return $msiefix($page);
12}
13
14function Fastcache_affichage_final($texte) {
15        global $page, $html, $flag_preserver; # dommage le pipeline ne connait pas les entetes...
16        if (isset($page['entetes']['X-Spip-Cache'])
17        AND $page['entetes']['X-Spip-Cache'] > 0
18        AND ( _FC_TOUTES OR isset($page['entetes']['X-Fast-Cache']) )
19        ) {
20
21                // verifier que le lanceur est OK
22                if (defined('_FC_LANCEUR')
23                AND !file_exists(_FC_LANCEUR)) {
24                        include_spip('creer_fastcache');
25                        creer_fastcache();
26                }
27
28                if (defined('_FC_KEY')) {
29
30                        // preparer les entetes
31                        $preserver = !$html OR $flag_preserver;
32                        $head = #'<'."?php\n".
33                                "// ".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n" .
34                                "header('Vary: Cookie, Accept-Encoding');\n";
35
36                        foreach ($page['entetes'] as $x => $v)
37                                if ($x !== 'X-Spip-Cache') {
38                                        if (strlen($v))
39                                                $head .= "header('$x: ".addslashes($v)."');\n";
40                                        else
41                                                $head .= "header('$x');\n";
42                                }
43
44                        // entetes pour les stats
45                        foreach(array('id_article', 'id_breve', 'id_rubrique') as $id)
46                                if (isset($GLOBALS[$id]))
47                                        $head .= "\$GLOBALS['$id'] = "
48                                        .var_export(intval($GLOBALS[$id]),true).";\n";
49
50                        // version MSIE
51                        if (_FC_IE_PNGHACK AND !$preserver)
52                                $ie = Fastcache_versionie($texte);
53
54                        // stocker les caches
55                        $ok = cache_set(_FC_KEY,
56                                array(
57                                        'head' => $head,
58                                        'gz' => gzencode(
59                                                $texte
60                                                .((_FC_DEBUG AND !$preserver)? "\n<!-- read "._FC_KEY." -->\n":'')
61                                                ),
62                                        'time' => @filemtime(_FILE_META)
63                                ),
64                                _FC_PERIODE
65                        );
66                       
67                        if (isset($ie))
68                                $ok &= cache_set('ie'._FC_KEY, gzencode($ie), _FC_PERIODE);
69
70                        return $texte
71                                . ((_FC_DEBUG AND !$preserver)
72                                        ? ($ok
73                                                ? "\n<!-- stored "._FC_KEY." -->\n"
74                                                : "\n<!-- error "._FC_KEY." -->\n"
75                                                )
76                                        : ''
77                                );
78                }
79
80        }
81
82        // else ...
83        return $texte;
84}
85
86# s'inserer au *debut* du pipeline affichage_final pour etre avant f_surligne etc
87# mais de preference apres mutualisation_url_img_courtes pour qu'il s'applique
88$GLOBALS['spip_pipeline']['affichage_final'] = preg_replace(',\|mutualisation_url_img_courtes|^,','\0|Fastcache_affichage_final', $GLOBALS['spip_pipeline']['affichage_final']);
89
90# Un recalcul provoque l'invalidation, par l'astuce du touch
91if (isset($_GET['var_mode'])) @touch(_FILE_META);
92
93?>
Note: See TracBrowser for help on using the repository browser.