2011-11-16 5 views
0

J'ai une application qui fait plusieurs demandes get à un service web et affiche une carte en utilisant ces données. Je l'utilise à plusieurs endroits. puisque la carte prend le temps de charger quelle est la meilleure façon de mettre en cache la requête get?mise en cache jquery obtenir des demandes

Je pense à l'approche suivante

si je viens d'utiliser Memcache pour mettre en cache la réponse de ma demande encore faire une demande de get. pour optimiser encore, je peux utiliser la mise en cache jquery/javascript et définir le cache Http.

Y a-t-il un moyen de mettre en œuvre d'autres façons d'améliorer les performances? parce que je ne veux pas faire plusieurs demandes d'obtenir sur toutes les pages pour afficher le même contenu de carte.

grâce

Répondre

1

La meilleure approche à votre situation est de mettre en cache et arrive à échéance en-têtes HTTP du côté serveur, et la force Jquery d'utiliser le cache tout en faisant la demande. Le cas échéant, je recommande également d'envoyer la date de modification du serveur. Après l'expiration de la mise en cache, JQuery demande d'abord si le contenu du service a changé par rapport à la date de dernière modification.

Si vous appliquez avec succès les en-têtes de mise en cache, le code côté client n'émettra pas de requête http jusqu'à ce que le cache expire.

Il y a pour améliorer les performances trois principales approches de mise en cache (AFAIK):

  • mise en cache de la base de données. Mise en cache de la requête et des résultats au niveau des données afin que, lorsqu'un service émet une requête, il ne s'exécute pas à chaque fois. Si votre requête de base de données prend beaucoup de temps et que différents clients émettent les mêmes demandes de service, vous devriez y réfléchir.
  • Mise en mémoire cache du serveur. S'il est appliqué, le serveur n'exécute pas l'action et renvoie le contenu de la mémoire mise en cache. Cette approche est plus simple à partir de la mise en cache de données principalement, et plus bénéfique.
  • Mise en cache client via HTTP En-têtes: C'est la solution la plus utile et la plus adaptée à votre situation. Si un client envoie une requête HTTP au même service avec les mêmes paramètres plus d'un dans le cycle de vie, il n'est pas nécessaire d'extraire la même réponse du serveur (pages statiques, images, fichiers css et javascript). Vous pouvez utiliser l'en-tête Cache-Control et l'attribut max-age pour atteindre cet objectif.
+0

Merci de penser que l'utilisation de memcached vous aidera de quelque manière que ce soit si je l'implémente? – Kishore

+0

Si vous implémentez la mise en cache client et proxy à l'aide d'en-têtes HTTP, un client ne demandera un service qu'une seule fois. Si vous implémentez Memcaching, le contenu mis en cache sera envoyé à différents utilisateurs demandant le même service. La pratique des paris consiste à implémenter les deux si applicable. – SadullahCeran

Questions connexes