4 votes

Cachez le contenu HTML en le stockant à l'intérieur d'une variable javascript dans un fichier js externe ?

J'ai une application web où le masterPage/template contient du HTML statique qui ne change jamais mais qui est envoyé avec chaque requête. (une grande partie de ce HTML est constituée d'éléments cachés qui sont affichés après que l'utilisateur ait fait quelque chose).

Je me demande s'il existe un moyen de les mettre en cache.

J'envisageais de placer le HTML dans une variable javascript et de faire un document.write ou un jquery $(tag).html(cachedHTML) ; pour obtenir ce contenu. L'avantage est que le fichier javascript sera mis en cache par le navigateur et que le HTML ne sera pas transmis (ce qui accélère la charge de la page et diminue la bande passante).

Existe-t-il une solution plus élégante ? Et si j'opte pour cette solution, y a-t-il un moyen facile de convertir tout le HTML pour qu'il soit à l'intérieur d'une chaîne javascript sans passer par le HTML et le formater ? (supprimer les espaces, échapper aux guillemets, etc...) Des idées ?

Merci !

Mise à jour : Voici l'info YSlow... cette page vous semble-t-elle trop grande ? (Il y a 3597 éléments DOM)

Quelques notes : En ce qui concerne les fichiers JS, il y en a trois principaux : jquery, jquery-ui, et mon js global minifié, le reste est généré par asp.net ou des choses comme getsatisfaction.

3voto

Pekka 웃 Points 249607

Je peux me tromper, mais je trouve que cela part d'une bonne intention mais n'est pas nécessaire. Si votre serveur est configuré correctement, la sortie HTML sera gzippée. Si nous ne parlons pas de mégaoctets de HTML, chaque image de votre page prendra plus de bande passante que le balisage du document.

D'après mon expérience, la plus grande inquiétude concernant les gros morceaux de données HTML est la façon dont le navigateur les traite. Un document HTML de 2 à 3 Mo occupera le centuple de la mémoire lorsqu'il sera rendu. Si c'est le cas dans votre scénario, il se peut que vous ayez un problème de conception que même la mise en cache ne résoudrait pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X