Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mise en cache, au niveau des clients #24

Open
skah-6 opened this issue Apr 7, 2021 · 0 comments
Open

Mise en cache, au niveau des clients #24

skah-6 opened this issue Apr 7, 2021 · 0 comments

Comments

@skah-6
Copy link

skah-6 commented Apr 7, 2021

Le cache des navigateurs internet conserve temporairement les scripts et les autres éléments des sites de la toile afin d’accélérer l'expérience de navigation, et éviter la surcharge des réseaux.

Si une page a déjà été chargée et que le code d'un script de cette page change, mais que ce script conserve le même nom, donc à fortiori le même lien, le navigateur internet risque d'ignorer la nouvelle version de ce script, et ne la chargera pas. Il utilisera sa version précédente, qu'il a gardé en mémoire. Ce afin d'éviter l'envoi d'une requête sur le chemin réseau ciblé, et ainsi alléger les réseaux qu'elle traverse, tout en optimisant la vitesse de navigation de l'utilisateur.

Il en va de même pour la page source en question, contenant le script.

La fonction de mise en cache est censée être présente sur tous les navigateurs internet pour des raisons évidentes, mais peut devenir problématique dans certains cas.

Dans mon cas, je me suis connecté avec un système récent, et un navigateur internet récent et tout équipé, le mardi 6 avril aux alentours de 16H afin de générer mon attestation de déplacement dérogatoire, puis je me suis re-connecté le mercredi 7 avril, à peu près à la même heure, avec le même navigateur internet, et l'application s'affichait correctement mais ne fonctionnait plus au niveau du bouton «Générer».

J'ai alors actualisé la page, et le problème persistait. J'ai donc ouvert la «Boîte à outils de développeur» de mon navigateur, afin de recharger proprement toute la page et son contenu, en cochant l'option «Désactiver la mise en cache HTTP», (actif dans tout l'onglet en question) et l'ensemble s'est alors remis à fonctionner correctement. J'imagine la détresse des gens pour qui rien n'a fonctionné... un problème récurrent sur la toile.

Cette application joue un rôle important à ce jour. Je n'ai pas téléchargé ni analysé le code de l'application, car j'ai beaucoup à faire, d'autant que je n'approuve pas son côté JavaScript, mais je suis tout à fait prêt à me pencher sur la question si vous estimez que je peux participer à apporter une solution.

Côté serveur, il vaut mieux éviter d'utiliser la directive «no-cache» dans l'en-tête de la requête HTTP, car certains navigateurs (dont ceux des téléphones mobiles multifonctions) ne la prennent tout simplement pas en charge, et d'autres navigateurs l'ignorent dans certaines conditions.

Une autre solution serait d'utiliser une variable «GET» dont le contenu est aléatoire et dynamique, mais ces variables sont parfois refusées par les serveurs et aboutissent à des erreurs. C'est donc une solution à éviter dans tous les cas. (Exemple: https://serveur.local/application?no-cache=0XJOddrg7h2cmSpD)

Je propose d'incorporer des solutions dans la documentation, en tant que recommandations d'utilisation à suivre lors de l'implémentation côté serveur.

Ou encore, dans le dernier recours, ne serait-ce qu'un JavaScript à implémenter sur les pages qui proposent un lien vers l'application, afin de générer un lien aléatoire et dynamique. En dernier recours, car JavaScript n'est pas toujours correctement implémenté selon les standards, et bien souvent il n'est présent que partiellement. Sans parler des problèmes de sécurité, et même des limitations qu'il peut apporter lorsque le navigateur en détecte dans la page...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant