Project

General

Profile

Revision 566b5b44

ID566b5b447989cc28e4b99339a1dfdc82c0d3a22c
Parent 57756917
Child 5f23aa1a

Added by Francois POIROTTE over 9 years ago

[#1286] Politique de cache plus aggressive

Ajoute une option (cache_max_age) dans les IHM web afin de suggérer de
manière plus aggressive aux navigateurs de mettre en cache les fichiers
statiques, afin d'accélérer le (re)chargement des pages.

NB: cette option n'a d'intérêt que si le client ne dispose d'aucune
surcharge pour les fichiers statiques ou si ces surcharges évoluent peu.
De plus, il s'agit d'une indication; le navigateur peut choisir de
l'ignorer complètement (par exemple, si l'utilisateur a explicitement
demandé que les contenus ne soient jamais mis en cache).

Change-Id: I3f2c2b15fd4cb05e9ca5732ff237233a667c3962
Refs: #1286.
Reviewed-on: https://vigilo-dev.si.c-s.fr/review/1495
Tested-by: Build system <>
Reviewed-by: Thomas BURGUIERE <>

View differences:

deployment/settings.ini.in
101 101
; Par défaut : 20 entrées maximum
102 102
;max_menu_entries = 20
103 103

  
104
; Durée maximale en secondes de conservation en cache
105
; des fichiers statiques (CSS, JavaScript, images, etc.).
106
; La valeur 0 permet de désactiver complètement la mise en cache.
107
; Notes :
108
; * Cette valeur fournit une indication sur la gestion du cache
109
;   aux navigateurs, mais ils sont libres de l'ignorer.
110
; * Si vous utilisez des fichiers statiques personnalisés,
111
;   une valeur trop élevée ralentira leur prise en compte.
112
;cache_max_age = 0
113

  
104 114
;
105 115
; 4 - Configuration des proxies.
106 116
;
development.ini
27 27
lang=fr
28 28
help_link=http://foo.bar/help
29 29
logo_link = /
30
cache_max_age=0
30 31

  
31 32
app.vigicore = /
32 33

  
vigigraph/config/middleware.py
40 40
    """
41 41
    app = make_base_app(global_conf, full_stack=full_stack, **app_conf)
42 42

  
43
    max_age = app_conf.get("cache_max_age")
44
    try:
45
        max_age = int(max_age)
46
    except (ValueError, TypeError):
47
        max_age = None
48

  
43 49
    # Personalisation des fichiers statiques via /etc/vigilo/vigigraph/public/.
44
    custom_static = StaticURLParser('/etc/vigilo/vigigraph/public/')
50
    custom_static = StaticURLParser('/etc/vigilo/vigigraph/public/',
51
                                    cache_max_age=max_age)
45 52

  
46 53
    # On définit 2 middlewares pour fichiers statiques qui cherchent
47 54
    # les fichiers dans le thème actuellement chargé.
48 55
    # Le premier va les chercher dans le dossier des fichiers spécifiques
49 56
    # à l'application, le second cherche dans les fichiers communs.
50
    app_static = StaticURLParser(resource_filename(
51
        'vigilo.themes.public', 'vigigraph'))
52
    common_static = StaticURLParser(resource_filename(
53
        'vigilo.themes.public', 'common'))
54
    local_static = StaticURLParser(resource_filename(
55
        'vigigraph', 'public'))
57
    app_static = StaticURLParser(
58
        resource_filename('vigilo.themes.public', 'vigigraph'),
59
        cache_max_age=max_age)
60
    common_static = StaticURLParser(
61
        resource_filename('vigilo.themes.public', 'common'),
62
        cache_max_age=max_age)
63
    local_static = StaticURLParser(
64
        resource_filename('vigigraph', 'public'),
65
        cache_max_age=max_age)
56 66
    cascade_list = [custom_static, app_static, common_static, local_static, app]
57 67

  
58 68
    LOGGER = getLogger("vigigraph")
......
72 82
            new_public_dir = resource_filename(entry.module_name, "public")
73 83
            LOGGER.debug("Adding static files directory for ext %s: %s",
74 84
                         (entry.name, new_public_dir))
75
            cascade_list.insert(0, StaticURLParser(new_public_dir))
85
            cascade_list.insert(0, StaticURLParser(new_public_dir,
86
                                                   cache_max_age=max_age))
76 87

  
77 88
    app = Cascade(cascade_list)
78 89
    return app

Also available in: Unified diff