J'ai un flux XML qui contient plus de 1000 enregistrements de propriétés (location, vente).Quelle est la meilleure façon de mettre en cache les flux XML localement?
Actuellement, je fais appel à ce flux 16x page d'accueil, retour toujours seulement 3 propriétés des critères spécifiques comme 3 nouvelle maison, 3 nouveaux appartements, etc, 5 maison recommandé, 5 appartements recommandés etc.
Ce scénario fonctionnait bien pendant 7 mois alors qu'il y avait plus de 200 propriétés et seulement 100-200 vues par jour. Il est maintenant en train de mettre en scène plus de 700 visites par jour et plus de 1000 propriétés et le téléchargement de 16 flux séparément juste pour montrer la page d'accueil devient plus lent et le trafic devient massivement plus grand. Je voudrais donc mettre en cache ces flux, je voudrais que mon 'robot' télécharge directement les flux de la source et que tous les visiteurs utilisent ma copie locale pour accélérer les choses et diminuer massivement la charge de trafic.
Je n'ai aucun problème à télécharger des fichiers XML localement et localement pour afficher des données. Mais je voudrais savoir comment résoudre les problèmes possibles comme:
- ne pas montrer des données aux clients, car robot est mise à jour des fichiers XML et fichier d'origine serait écrasé et vide tout chargement de nouvelles données
- utilisant un fichier XML comme locale sauvegarde, signifie que si le serveur source est la page d'accueil en mode hors connexion travaillerais encore et le chargement
- en vous assurant que je ne vais pas les données de verrouillage pour les clients de telle sorte que robots serait incapable de mettre à jour les fichiers
Mes premiers toughts seraient travailler avec 2 fichiers XML pour la veille flux de données, un qui serait montré aux clients et un qui serait téléchargé. Si le téléchargement est correct, le fichier XML téléchargé sera utilisé en tant que données en direct et l'autre sera supprimé. Une sorte de marquage incrémental avec un fichier fonctionnant en tant que fichier contenant le nom des données réelles.
Y at-il un moyen de mettre en cache ces fichiers XML afin qu'il fasse quelque chose de similaire? Vraiment le problème principal est d'avoir une solution pare-balles pour que les clients ne voient pas les pages d'erreur ou les résultats vides.
Merci.
Oh, je devrais ajouter - comme cela pourrait être pertinent ici - qu'une autre option dans le traitement de la mémoire cache normale est d'ajouter sur un degré acceptable de staleness, par ex. ("donnez-moi ceci s'il est frais, ou si vous le considéreriez normalement démodé mais périmé de moins de 4 heures"). –
Serait-il possible de vérifier la taille réelle ou l'état du fichier et si cache/synchronisation seulement si elle diffère? – feronovak
Ce serait, bien que vous auriez à aller plus loin que les changements peuvent (et dans la vraie vie, le font souvent) entraîner des fichiers de taille égale. Vous pouvez stocker et MD5 du fichier ou le E-tag que le WebResponse a obtenu (ce dernier est meilleur si E-tags sont envoyés, si ne pas réprimander la personne qui exécute le côté Web des choses si possible jusqu'à ce qu'ils sont) ou le dernier -mod date sur la réponse web (si les changements de sous-seconde sont impossibles dans ce système). Encore une fois, la vérification de last-mod et de etags se fait automatiquement avec l'utilisation appropriée du cache Web intégré à HttpWebResponse lorsque vous utilisez les options appropriées. –