J'utilise un HttpHandler pour diffuser dynamiquement des images dans une application Web ASP.Net. J'ai un problème de performance (Firfox/Firebug/YSlow signale qu'il y a trop de requêtes HttpRequests)ASP.Net - Images dynamiques multiples. Problèmes de performances dus à trop de requêtes HTTP
J'ai parfois entre 50 et 100 images par page .. 3 arborescences (unités/catégories/objets) avec chacune noeud ayant sa propre image;)
image Chaque élément url est défini dynamiquement comme si ...
SomeImage.ImageUrl = "/image.axd?ImageId={0}";
Remarque: Je ne connais que les images qui seront nécessaires au moment de l'exécution.
supplémentaires: Les images sont situés sur le système de fichiers du serveur, dans un fichier de ressources et aussi dans la base de données - Les utilisateurs peuvent télécharger leurs propres images pour associer à mes objets système et le ImageHandler détermineront chaque emplacement d'image dynamique)
Dans le web.config le HttpHandler est configuré et fonctionne comme prévu ... ajouter verbe = "GET" path = type "image.axd" = "Vision.OnsightManager.ImageHandler"
Dans le HttpHandler l'image brute les octets sont renvoyés en réponse à chaque requête d'image. Ainsi, dans la méthode WriteResponse() du gestionnaire d'images, les octets d'image sont renvoyés, comme cela ...
context.Response.BinaryWrite (bytes);
Toutes les images afficher correctement, mais l'application a des problèmes de performance comme prévu où de nombreuses images sont affichées ...
Question:
Quelle approche préconisez-vous, en plus de réduire le nombre d'images;), pour minimiser toutes les requêtes HttpRequests générées pour chaque image? Peut-être combiner en une seule demande Http?
J'ai lu des articles sur la combinaison de plusieurs requêtes CSS en une seule requête, en utilisant un mappage d'image (image combinée unique avec des décalages), etc., mais aucune ne semble convenir à mon scénario particulier.
Beaucoup obligé!
Je suggère à la fois [la mise en cache du disque] (http://imageresizing.net) et envoyer des en-têtes de mise en cache client afin que les demandes répétées n'aient pas à toucher le serveur. Cela ressemble à une application métier, où la plupart des utilisateurs la visitent plusieurs fois, et la mise en cache corrige probablement le nombre de requêtes. –