Bonne façon d'avoir ASP.NET / IIS ne PAS mettre en cache les fichiers PDF
J'ai le scénario suivant, et je voulais des suggestions sur ce qui est la meilleure façon de gérer cela. Mon web app (ASP.NET 2.0 /IIS 6) génère des fichiers PDF, et j'ai une page de résultats avec des liens vers ces fichiers Pdf.
Maintenant, j'ai remarqué que si je visite la page de résultats, cliquez sur un fichier PDF (il s'ouvre dans une nouvelle fenêtre), puis re-générer le fichier PDF et de cliquer sur le même lien dans la page de résultats, le VIEUX PDF est montré, au lieu de le nouveau. J'ai dû supprimer les fichiers internet temporaires dans le but de voir la nouvelle.
Donc, puisque je ne suis PAS servir un ASPX qui écrit en fait le format PDF (et je ne veux pas la boîte de dialogue Enregistrer pour afficher), mais tout de liaison vers le fichier PDF, je veux savoir quelle est la meilleure façon de s'assurer que l'utilisateur voit toujours le dernier fichier dans le serveur, et non pas une version mise en cache.
Je devine que l'ajout de pas-en-têtes de cache est hors de question. Mais le PDF demande toujours passer par un gestionnaire HTTP, donc je voudrais savoir si je dois créer un gestionnaire HTTP pour intercepter les demandes pour les fichiers Pdf, ou si je dois le faire au niveau de IIS...cependant je n'ai pas forcément envie d'éviter la mise en cache TOUS les fichiers PDF sur ce site.
Des suggestions? Merci d'avance pour l'aide.
ne savais pas que c'était un problème connu Michiel, merci de me le faire savoir. Puisque vous avez l'air d'être déjà familier avec la question, avez-vous des liens vers des articles détaillant/confirmant la question? Peut être utile pour les personnes ayant des problèmes similaires sur les liens disponibles dans la question.
J'ai résolu ce problème avec une page aspx, qui sert de mon fichier PDF
OriginalL'auteur GR7 | 2011-11-22
Vous devez vous connecter pour publier un commentaire.
Si votre lien vers le document pdf a un unique querystring ajouté, je crois, qui permettrait d'empêcher la mise en cache. Le temps dans les tiques est bon pour l'utiliser, par exemple:
hey Neil, n'a pas fonctionné. Apparemment, l'ajout d'un hasard de la chaîne de requête pourrait fonctionner pour les ASP/ASPX fichiers, mais pas pour les fichiers PDF. Je reçois un 400 bad request réponse. D'autres idées?
Je suis sûr que cela fonctionne pour n'importe quoi. Dans cet exemple, davidwalsh.nom/prévention-cache, ils l'utilisent avec css et javascript - une ressource statique comme un fichier pdf. Faites vos fichiers PDF générés existe pas sur le disque ou sont-ils fournis à l'aide d'un gestionnaire?
ils existent sur le disque. permettez-moi de relire l'article que vous avez suggéré et je vais aussi faire un PoC sur un simple site IIS demandant un simple PDF, voir si cela fonctionne de cette façon.
mon mauvais. La raison de ce qui me donnait une Mauvaise Demande d'erreur IIS était parce que le nom de fichier a une esperluette dans le nom de fichier. Une fois que j'ai essayé avec un nom de fichier différent, il a bien fonctionné.
OriginalL'auteur Neil Thompson
J'ai juste eu un problème similaire. J'ai ma page permet aux utilisateurs de saisir des données et de générer un nouveau fichier pdf Enregistrer cliqué. Le nouveau fichier pdf écrase l'ancien. Dans IE8, lorsque l'utilisateur cliquez sur le lien pdf après la sauvegarde, l'ancien pdf sera toujours montré (de l'utilisateur nécessité de vider le cache pour afficher le nouveau).
Après des heures de recherche, j'ai trouvé que dans IIS6, allez dans "mise en Cache de Sortie, ajoutez une nouvelle règle de mise en cache avec l'extension de fichier".aspx', cochez 'Utilisateur en mode de mise en cache" et "Kernel-mode de mise en mémoire cache alors sous les deux options, sélectionnez l'option "Empêcher la mise en cache'. Ce travail est pour moi!
OriginalL'auteur jsuen
Le fait que la compensation de vos fichiers internet temporaires vous a donné la nouvelle version montre que le navigateur est la source de la cache. Vous pourriez faire de iis mise en cache mais qui n'arrête pas de procurations de la mise en cache du document. Si vous avez besoin d'être sûr à 100% que l'utilisateur voit que la dernière version, je vous conseille d'utiliser une valeur de chaîne de requête à cause de l'url à être différent. La chaîne de requête pourrait être la génération de pdf timestamp.
OriginalL'auteur Chris Felstead