2010-09-29 4 views
3

Dans certaines de mes pages, j'ai des "modèles". Par exemple, je pourrais avoir une table, et j'ai un « modèle » pour chaque ligne de la tableMettre en cache un fichier html sur le client

<div class="wholeRow"><div class="lefCol"><!-- some stuff will go here --></div>... 

Puis-je utiliser JS pour remplir ce tableau. C'est un peu idiot de dire que l'utilisateur doit charger ce modèle à chaque fois qu'il visite la page - je devrais pouvoir le mettre en cache.

Je ne suis pas sûr de savoir comment le mettre en cache; la seule chose que je peux penser est de le mettre dans un fichier javascript statique et d'envelopper tout avec document.write, mais cela semble un peu, bien, stupide. Est-ce que quelqu'un a d'autres idées?

+0

Regardez ma solution: http://stackoverflow.com/questions/2326943/when-do-items-in-html5-local-storage-expire/17632458#17632458 –

Répondre

1

S'il s'agit d'un contenu qui ne change pas de façon dynamique entre les chargements de pages, il doit être généré sur le serveur, pas par Javascript. S'il s'agit d'un contenu dynamique, cela n'a aucun sens de le mettre en cache. Je voudrais d'abord penser à la conception de votre application, puis à la mise en cache avancée. Les opérations de mise en cache sur le client sont principalement gérées par le navigateur (et elles sont plutôt bien gérées de nos jours). Si vous voulez en cache les résultats calculés par Javascript, vous avez deux possibilités de stockage:

  1. Cookies
  2. HTML5 API pour stocker des données JS

Aucun d'entre eux est parfait à cet effet, car aucun des eux ont été conçus pour la mise en cache. Pour l'instant je voudrais aller pour les cookies car ils sont largement pris en charge. Après avoir chargé votre page, vérifiez simplement si un cookie existe et si oui, affichez simplement son contenu. Sinon, générez-le en utilisant JS. Sur une note de côté

- ne pas utiliser <div> pour les données tabulaires. L'élément < de la table > a été conçu pour cela.

+0

Cela me semble bizarre; les gens mettent-ils vraiment les données html dans les cookies? Cela semble vraiment mauvais. Je devrais essentiellement contrôler manuellement le cache au lieu de laisser le navigateur le faire. Aussi: le template est statique, mais ce qui est mis dans le template ne l'est pas. Je ne mets pas de "résultats calculés par javascript" n'importe où, je stocke juste du html (qui est généré par le serveur). – Xodarap

+0

Alors vous n'avez rien à faire. Le navigateur mettra en cache tout ce qui provient du serveur (généralement). Je pensais que "Puis j'utilise JS pour remplir cette table." Cela signifie que vous utilisez un type de calcul JS pour remplir la table avec des données et que vous souhaitez mettre en cache la table avec les données remplies. –

+0

Je ne pense pas que je suis très clair. La page entière est dynamique - elle ne peut pas être mise en cache. cependant * les portions * de la page peuvent être mises en cache. Comment puis-je mettre en cache certaines parties de cette page? Si les parties étaient js ou css ou images, je pourrais les mettre dans des fichiers séparés avec des en-têtes de contrôle de cache. Comment puis-je faire cela avec html? – Xodarap

Questions connexes