Changeset 32441 in spip-zone


Ignore:
Timestamp:
Oct 28, 2009, 9:08:40 PM (11 years ago)
Author:
fil@…
Message:

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%

Location:
_plugins_/fastcache
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fastcache/creer_fastcache.php

    r26756 r32441  
    2727        $prefix = var_export($GLOBALS['cookie_prefix'], true);
    2828
     29        $xcache = var_export(find_in_path('inc/xcache.php'), true);
     30
    2931        $contenu = '<'.'?php' .
    3032<<<CONFIG
     
    4042@define ('_FC_IE_PNGHACK', $pnghack);
    4143@define ('_FC_COOKIE_PREFIX', $prefix);
     44@define ('_FC_XCACHE', $xcache);
    4245
    4346CONFIG
  • _plugins_/fastcache/fastcache.php

    r24495 r32441  
    66# implique que ces pages n'aient pas besoin d'executer du php a chaque hit
    77#
    8 # (c) 2007 fil@rezo.net
     8# (c) 2007-2009 fil@rezo.net
    99#
    1010
     
    1616AND !isset($_COOKIE[_FC_COOKIE_PREFIX.'_session'])
    1717AND !isset($_SERVER['PHP_AUTH_USER'])
    18 ) {
    19         define('_FC_FILE',
    20                 _FC_DIR_CACHE .'fc_'
    21                 .md5($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])
    22         );
    23 }
     18)
     19        define('_FC_KEY', $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    2420
    2521function fc_testie() {
     
    2925                AND preg_match('/MSIE /i', $_SERVER['HTTP_USER_AGENT'])
    3026                )
    31                 OR $_GET['fctestie'];
     27                OR isset($_GET['fctestie']);
    3228}
    3329
    34 if (defined('_FC_FILE')
    35 AND @file_exists(_FC_FILE.'_head.inc')
    36 AND @filemtime(_FC_FILE.'_head.inc') > @filemtime(_FC_META)
    37 AND (
    38         (time()-@filemtime(_FC_FILE.'_head.inc') < _FC_PERIODE)
    39         OR (@filemtime(_FC_FILE.'.lock')>time()-10)
    40         OR !(1+touch(_FC_FILE.'.lock'))
    41 )) {
    42         include _FC_FILE.'_head.inc';
    43         $f = _FC_FILE;
    44         if (fc_testie() AND @file_exists($f.'_ie'))
    45                 $f .= '_ie';
    46         if (strstr(@$_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
    47                 header('Content-Encoding: gzip');
    48                 $f .= '.gz';
    49         }
    50         header('Content-length: '.@filesize($f));
     30if (defined('_FC_KEY'))
     31        require_once _FC_XCACHE;
     32
     33if (defined('_FC_KEY')
     34AND $p = cache_get(_FC_KEY)) {
     35        eval($p['head']);
     36        $b = (!is_null($p['ie']) AND fc_testie()) ? 'ie' : 'body';
     37        header('Content-length: '.strlen($p[$b]));
    5138        header('Connection: close');
    52         @readfile($f);
    53         flush();
     39        echo $p[$b];
    5440
    5541        // faire les stats ?
  • _plugins_/fastcache/fastcache_options.php

    r24495 r32441  
    2828                }
    2929
    30                 if (defined('_FC_FILE')) {
     30                if (defined('_FC_KEY')) {
    3131
    3232                        // preparer les entetes
    33                         $head = '<'."?php\n"
    34                         ."// ".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n"
    35                         ."header('Vary: Cookie, Accept-Encoding');\n";
     33                        $head = #'<'."?php\n".
     34                                "// ".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n" .
     35                                "header('Vary: Cookie, Accept-Encoding');\n";
    3636
    3737                        foreach ($page['entetes'] as $x => $v)
     
    4545                                        .var_export(intval($GLOBALS[$id]),true).";\n";
    4646
     47                        // version MSIE
     48                        $ie = (_FC_IE_PNGHACK AND $html)
     49                                ? Fastcache_versionie($texte)
     50                                : null;
     51
    4752                        // stocker les caches
    48                         $ok = ecrire_fichier(_FC_FILE.'_head.inc', $head);
    49                         $ok &= ecrire_fichier(_FC_FILE, $texte
    50                         .(_FC_DEBUG?"\n<!-- read "._FC_FILE." -->\n":''));
    51                         $ok &= ecrire_fichier(_FC_FILE.'.gz', $texte
    52                         .(_FC_DEBUG?"\n<!-- read "._FC_FILE.".gz -->\n":''));
    53 
    54                         // version MSIE
    55                         if (_FC_IE_PNGHACK
    56                         AND $html) {
    57                                 $textemsie = Fastcache_versionie($texte);
    58                                 $ok &= ecrire_fichier(_FC_FILE.'_ie', $textemsie
    59                                 .(_FC_DEBUG?"\n<!-- read "._FC_FILE."_ie -->\n":''));
    60                                 $ok &= ecrire_fichier(_FC_FILE.'_ie.gz', $textemsie
    61                                 .(_FC_DEBUG?"\n<!-- read "._FC_FILE."_ie.gz -->\n":''));
    62                         }
    63 
    64                         supprimer_fichier(_FC_FILE.'.lock');
    65 
    66                         if (!$ok) {
    67                                 include_once 'ecrire/inc_version.php';
    68                                 sous_repertoire(dirname(_FC_DIR_CACHE), basename(_FC_DIR_CACHE), true);
    69                         }
     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                        );
    7063
    7164                        return $texte
    7265                                . (_FC_DEBUG
    7366                                        ? ($ok
    74                                                 ? "\n<!-- stored "._FC_FILE." -->\n"
    75                                                 : "\n<!-- error "._FC_FILE." -->\n"
     67                                                ? "\n<!-- stored "._FC_KEY." -->\n"
     68                                                : "\n<!-- error "._FC_KEY." -->\n"
    7669                                                )
    7770                                        : ''
     
    8982$GLOBALS['spip_pipeline']['affichage_final'] = preg_replace(',\|mutualisation_url_img_courtes|^,','\0|Fastcache_affichage_final', $GLOBALS['spip_pipeline']['affichage_final']);
    9083
    91 
    92 # supprimer les fc_cache trop vieux ?
    93 if (isset($_GET['var_mode'])) {
    94         array_map('supprimer_fichier', preg_files(_FC_DIR_CACHE, '/fc_'));
    95 }
    96 
    9784?>
  • _plugins_/fastcache/plugin.xml

    r25251 r32441  
    4343        <fonctions>fastcache_fonctions.php</fonctions>
    4444        <necessite id="SPIP" version="[1.9.0;]" />
     45        <necessite id="xcache" />
    4546</plugin>
Note: See TracChangeset for help on using the changeset viewer.