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

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

Fastcache delegue desormais le stockage de ses donnees au plugin xcache : 35 lignes de code en moins, et des perfs qui augmentent de plus de 50%

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