2010-10-17 9 views
1

J'ai un site Web qui se connecte à 14-17 flux xml et télécharge des flux avec chaque chargement de page. C'était bien à des fins de test et pour le trafic < 100/jour.Meilleure façon de mettre en cache des fichiers XML

Cependant, il arrive maintenant à l'étape lorsque la page se charge plus lentement et plus lentement car j'ai besoin d'attendre le téléchargement de XML externe.

Quelle est la meilleure façon de mettre en cache/manipuler avec ces fichiers? Ces données sont constamment mises à jour, donc plutôt que de télécharger des flux XML à chaque visite, je voudrais avoir un robot qui le fait toutes les 5 minutes localement et les visiteurs à lire uniquement à partir de copies locales.

Quelles méthodes utiliseriez-vous pour vous assurer que les fichiers XML ne seront pas verrouillés ou qu'il n'y aura pas de résultats nuls lors du téléchargement de nouveaux résultats?

Merci.

Répondre

1

Une option serait d'utiliser memcached. Vous pouvez mettre en cache les données XML ici et définir une expiration pour 5 minutes, par exemple, et charger vos pages de memcached.

Une autre option (plus facile à configurer ou si vous n'avez pas de mémoire vive) serait de stocker les données téléchargées dans une base de données relationnelle au lieu de charger la page. Ensuite, demandez à vos pages de charger les données à partir de là.

+0

+1: memcached est le chemin à parcourir. – rsenna

+0

Donc, fondamentalement, je n'ai pas besoin de changer de code du tout? Ai-je besoin de changer l'adresse du fournisseur uniquement? ou ai-je besoin d'une bibliothèque/client C# memcached? Merci – feronovak

+0

les données seront disponibles si le serveur source est hors ligne? – feronovak

1

Je stockerais probablement les données dans memcached et mettre à jour les données après chaque téléchargement. Vous aurez toujours des données disponibles même si le fichier n'est pas sur le disque, et vous aurez des ordres de grandeur moins d'entrées/sorties disque que de les avoir toutes lues directement à partir du fichier, ce qui améliorera considérablement les performances.

Pour C# Je pense que c'est la bibliothèque que vous aurez besoin: http://sourceforge.net/projects/memcacheddotnet/

+0

les données seront-elles disponibles si le serveur source est hors ligne? – feronovak

+0

Vous pouvez configurer memcached pour conserver les données aussi longtemps que vous le souhaitez, ce qui peut certainement être le cas. –

Questions connexes