Les données jqGrid stockées dans le cache du navigateur?

JqGrid stocke-t-il les données de la grid sur le système de fichiers? Si tel est le cas, devez-vous effacer le cache du navigateur pour le supprimer?

Ou est-ce simplement stocké en mémoire par JavaScript (et le navigateur)? La fermeture de votre navigateur supprime-t-elle les données?

Les réponses à ces questions changent-elles selon que vous utilisez ou non loadOnce ?

Par défaut, les données chargées à partir du serveur (données JSON ou XML) seront enregistrées dans la mémoire cache du navigateur, mais ne seront pas utilisées à la demande suivante. La raison en est que jqGrid implémente par défaut le même comportement que les requêtes ajax, comme le paramètre cache:false de jQuery.ajax . Cela signifie que toutes les demandes ont un paramètre supplémentaire nd tel que nd=1286296925096 qui correspond à l’horodatage. L’URL de toutes les demandes GET est unique et les données enregistrées locales ne seront pas utilisées deux fois. Donc, si vous voulez que jqGrid n’utilise pas les données du cache du navigateur local, vous ne devez rien faire .

Si vous souhaitez également refuser l’enregistrement des données localement (par exemple, pour des raisons de sécurité ou pour réduire le remplissage du cache local avec les informations qui ne seront jamais utilisées), vous pouvez inclure une directive no-store dans l’en-tête HTTP de la réponse du serveur.

Si vous souhaitez mettre en cache les requêtes du serveur et utiliser les données, vous prmNames: { nd:null} choisir l’option prmNames: { nd:null} jqGrid . Ensuite, les données des prochaines requêtes pourraient être extraites du cache du navigateur local. Si vous faites cela, je vous recommande d’inclure dans l’en-tête HTTP de la réponse du serveur les directives Cache-Control qui forcent à utiliser le comportement de mise en cache dont vous avez besoin. Par exemple, j’utilise personnellement Cache-Control: max-age=0 et utilise ETag avec le hachage des données envoyées. Ainsi, toutes les requêtes ajax seront envoyées au serveur pour revalider le cache local. Toutes les demandes contiendront automatiquement l’en If-None-Match tête HTTP If-None-Match avec l’ ETag des données du cache local. Si les données ne sont pas modifiées, le serveur peut répondre avec la réponse HTTP/1.1 304 Not Modified sans corps au lieu de HTTP/1.1 200 OK avec le corps contenant les données. La réponse HTTP/1.1 304 Not Modified permet au navigateur d’utiliser le cache local.

MISE À JOUR: J’utilise en outre Cache-Control: private qui désactive la mise en cache des données sur le proxy et déclare que les données peuvent être mises en cache, mais non partagées avec d’autres utilisateurs.

Si vous souhaitez en savoir plus sur le contrôle de la mise en cache en respectant les en-têtes HTTP, je vous recommande de lire le didacticiel de mise en cache suivant.