Revision 566b5b44
[#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 <qa@vigilo-dev.si.c-s.fr>
Reviewed-by: Thomas BURGUIERE <thomas.burguiere@c-s.fr>
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