Project

General

Profile

Development #75916

Pouvoir prévenir combo pour invalider le cache sur une cellule fiches

Added by Stéphane Laget about 1 year ago. Updated 4 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
28 March 2023
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No
Tags:

Description

Lorsqu'on part d'une cellule fiche ou json dans combo pour déclencher un formulaire wcs qui va modifier une fiche, lorsqu'on revient sur la page combo affichant cette fiche, les données affichées ne sont pas toujours mises à jour.

Le point initial était "avoir un cache à zéro secondes" pour qu'une cellule soit mise à jour immédiatement après un retour de wcs.
C'est un pb rencontré en front office essentiellement.

L'idée serait de pouvoir passer un paramètre "no-cache" dans l'url
Celui-ci serait adapté pour une redirection contrôlée, dirait à la page d'ignorer tout cache de cellule (et les cellules se chargeant ça actualiserait le cache)

Associated revisions

Revision 6fcb6845 (diff)
Added by Benjamin Dauvergne 4 months ago

data: implement ?nocache parameter for JSON cells (#75916)

If ?nocache is given in the page query-string and an user is
authenticated, it changes invalidate_cache to True in RequestWrapper.request().

The template placeholder.html is modified to pass the ?nocache parameter
recursively to asynchronously loaded cells if it is active on the page.

Revision d51abbf3 (diff)
Added by Benjamin Dauvergne 4 months ago

wcs: pass django's request to requests_wrapper (#75916)

To enable the ?nocache behaviour when calling w.c.s.

History

#1

Updated by Stéphane Laget 6 months ago

Avec le même besoin sur les cellules json.

#2

Updated by Benjamin Dauvergne 6 months ago

Discuté1 récemment en réunion CTP suite à problème similaire au CD06 (#84168-10). Ce serait bien de lier les autres tickets clients ici s'il y en a (et j'en ferai un ticket Publik parce que la solution n'est pas forcément ce nocache).

1 https://dev.entrouvert.org/projects/reunions-internes/wiki/Dev-2023-12-11#discussions-plus-larges-quand-il-y-en-a

#4

Updated by Benjamin Dauvergne 6 months ago

Stéphane Laget a écrit :

Avec le même besoin sur les cellules json.

Dans #84168 j'ai aussi identifié le problème avec les expressions {{ cards|... qui utilise aussi un cache par défaut à 15 secondes, dans ce cas il faudrait aussi un filtre |nocache si on reste sur cette idée.

#5

Updated by Benjamin Dauvergne 6 months ago

J'ai un peu peur qu'un nocache en URL aussi puissant ne donne des facilité pour provoquer des DOS volontaires ou involontaires sur le portail d'une ville; si on prend le cas d'un catalogue d'activité un peu long à lire, le fait de pouvoir désactiver l'utilisation des caches va permettre de provoquer de nombreux appels entre combo/passerelle/le logiciel métier derrière, sans aucun contrôle.
On pourrait :
  • n'accepter le filtre que sur une session connectée
  • poser un timestamp dans le cache ne permettant de ne l'utiliser qu'une fois par seconde/session

Il faudrait qu'il agisse sur toutes les instances de requests_wrapper, celle dans combo et celle dans publik-django-templatetags.

PS: explication pour CPF, requests_wrapper c'est le bout de code qui fait les appels HTTPs aux web-services, il en existe une copie dans combo et une dans publik-django-templatetags, c'est à ce niveau qu'est fait le cache, la clé du cache étant l'URL appelée, il se trouve que l'URL appelée par une cellule fiche sur une page récupérant la fiche liée au name_id dans l'URL et par cards|objects:"senior"|filter_by_user:name_id|include_fields|first|get:"user"|get:"mobile" (qui fait la même chose à peu de chose près) n'est pas la même, et donc on ne joue pas sur le même cache.

#7

Updated by Benjamin Dauvergne 6 months ago

  • Assignee set to Benjamin Dauvergne
#8

Updated by Robot Gitea 6 months ago

  • Status changed from Nouveau to En cours

Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :

#9

Updated by Robot Gitea 5 months ago

  • Status changed from En cours to Solution proposée
#10

Updated by Robot Gitea 5 months ago

  • Status changed from Solution proposée to Solution validée

Corentin Sechet (csechet) a approuvé une pull request sur Gitea concernant cette demande :

#11

Updated by Olivier Renard 4 months ago

Autre cas d'usage:
#12

Updated by Robot Gitea 4 months ago

  • Status changed from Solution validée to Résolu (à déployer)

Benjamin Dauvergne (bdauvergne) a mergé une pull request sur Gitea concernant cette demande :

#13

Updated by Transition automatique 4 months ago

  • Status changed from Résolu (à déployer) to Solution déployée
#15

Updated by Transition automatique 2 months ago

Automatic expiration

Also available in: Atom PDF