source: spip-zone/_plugins_/fastcache/fastcache.php @ 32662

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

page blanche sous MSIE (merci cym pour l'aide au debug)

File size: 1.7 KB
Line 
1<?php
2
3#
4# un script pour servir quelques pages le plus vite possible
5#
6# implique que ces pages n'aient pas besoin d'executer du php a chaque hit
7#
8# (c) 2007-2009 fil@rezo.net
9#
10
11# debut du code
12define('_DIR_RESTREINT_ABS', 'ecrire/');
13
14if (empty($_POST)
15AND !isset($_COOKIE[_FC_COOKIE_PREFIX.'_admin'])
16AND !isset($_COOKIE[_FC_COOKIE_PREFIX.'_session'])
17AND !isset($_SERVER['PHP_AUTH_USER'])
18)
19        define('_FC_KEY', 'fastcache:'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
20
21function fc_testie() {
22        return
23                (
24                strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'msie')
25                AND preg_match('/MSIE /i', $_SERVER['HTTP_USER_AGENT'])
26                )
27                OR isset($_GET['fctestie']);
28}
29
30if (defined('_FC_KEY'))
31        require_once _FC_MEMOIZATION;
32
33if (defined('_FC_KEY')
34AND $p = cache_get(_FC_KEY)
35AND $p['time'] == @filemtime(_FC_META)
36) {
37        // choix du body
38        $b = (strlen($p['ie']) AND fc_testie()) ? 'ie' : 'body';
39
40        // envoi des entetes
41        eval($p['head']);
42
43        // compression gzip
44        if (_FC_GZIP
45        AND strstr(@$_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
46                header('Content-Encoding: gzip');
47                $p[$b] = gzencode($p[$b]);
48        }
49
50        // cache navigateur ?
51        $etag = '"'.md5($p[$b]).'"';
52        header('ETag: '.$etag);
53        if (@$_SERVER['HTTP_IF_NONE_MATCH'] == $etag
54        OR (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) AND strstr($p['head'], $_SERVER['HTTP_IF_MODIFIED_SINCE']))
55        ) {
56                header('HTTP/1.0 304 Not Modified');
57                exit;
58        }
59
60        // ultime entete : la longueur
61        header('Content-length: '.strlen($p[$b]));
62        header('Connection: close');
63        echo $p[$b];
64
65        // faire les stats ?
66        if (_FC_STATS_SPIP) {
67                include_once _DIR_PLUGIN_FASTCACHE.'public/stats.php';
68                public_stats();
69        }
70}
71
72else {
73        include_once _DIR_RESTREINT_ABS.'inc_version.php';
74        include _DIR_RESTREINT_ABS.'public.php';
75}
76
77?>
Note: See TracBrowser for help on using the repository browser.