Changeset 112486 in spip-zone


Ignore:
Timestamp:
Nov 20, 2018, 6:22:06 PM (3 weeks ago)
Author:
jluc@…
Message:

Exemple de durée dynamique progressive pour un cache : #CACHE{3600, progapprox date_creation}

Location:
_plugins_/cachelab/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/cachelab/trunk/inc/cachelab_invalideur.php

    r112171 r112486  
    152152        }
    153153}
     154
     155//
     156// Exemple de durée de cache dynamique
     157//
     158// Renvoie une durée de cache trés courte pour les caches frais
     159// et de plus en plus longue au fur et à mesure que le cache vieillit
     160// Ainsi on peut écrire un filtre assurant un affichage approximatif
     161// et permettre à la fois d'afficher "posté il y a 16 secondes", bien précis,
     162// et "posté il y a 3 mois" ou "il y a 2 ans", bien suffisant en général.
     163//
     164function cachelab_duree_progapprox($date_creation) {
     165        $dt_creation = new DateTime($date_creation);
     166        if (!$dt_creation)
     167                return _DUREE_CACHE_DEFAUT;
     168
     169        $interval = $dt_creation->diff('NOW',true); // valeur absolue
     170        if (!$interval)
     171                return _DUREE_CACHE_DEFAUT;
     172        if ($interval->y > 2)
     173                return 6*30*24*3600; // 6 mois si plus de 2 ans
     174        if ($interval->y)
     175                return 30*24*3600;      // 1 mois si plus d'un an
     176        if ($interval->m)
     177                return 7*24*3600;       // 1 semaine si plus d'un mois
     178        if ($interval->d > 7)
     179                return 24*3600;         // 1 jour si plus d'une semaine
     180        if ($interval->d)
     181                return 6*3600;          // 6h si plus d'un jour
     182        if ($interval->h > 6)
     183                return 3600;            // 1h si plus de 6h
     184        if ($interval->h)
     185                return 30*60;           // 1/2h si plus d'1h
     186        if ($interval->i > 10)
     187                return 10*60;           // 10 minutes si plus de 10 minutes
     188        if ($interval->i)
     189                return 60;                      // chaque minute si plus d'une minute
     190        return 10;                              // 10secondes si moins d'une minute
     191}
  • _plugins_/cachelab/trunk/paquet.xml

    r112183 r112486  
    22        prefix="cachelab"
    33        categorie="outil"
    4         version="0.4.0"
     4        version="0.4.1"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.