2009-10-15 4 views
0

Il s'agit peut-être d'une «pratique exemplaire» que j'ai oubliée ou que je ne connais pas, alors n'hésitez pas, s'il vous plaît.Problème de mise en cache de fichiers informatiques avec le site Web asp.net

J'ai un site Web asp.net qui remplit un gridview avec des colonnes de ma table de base de données. Une de ces colonnes est traitée en un lien vers un document Word sur un autre serveur. Le problème est que si un utilisateur clique sur le document Word pour l'afficher, puis que ce document est mis à jour sur le serveur distant, l'utilisateur ne peut pas accéder au document modifié jusqu'à ce que son cache soit effacé et forcé à sortir sur le réseau. prenez une nouvelle copie quand le lien est cliqué.

Fondamentalement, je veux en quelque sorte forcer la machine à ne jamais utiliser la copie en cache du document, mais toujours aller sur le réseau pour obtenir la copie la plus récente. Question de bonus: Serait-il mieux géré en quelque sorte en stockant les documents dans SharePoint? UPDATE: en utilisant Response.Cache.SetCacheability(HttpCacheability.NoCache); dans mon codebehind J'ai résolu le problème dans FireFox, mais IE8 est bizarre. Si je mets à jour le document puis que je clique dessus, le document doc apparaît dans la fenêtre IE sans les modifications. Cependant, si je fais des changements, les sauvegarder et ensuite cliquer sur le document pour ouvrir un nouvel onglet, le document reflète les changements. Je suis la plupart du temps là-bas ...

Répondre

2

Essayez d'ajouter un peu de données supplémentaires au lien. Voici un exemple utilisant js; Si vous créez le côté serveur URL, il doit être essentiellement le même:

var url = "http://www.mydomain.com/mywordfile.doc?ts=" + (new Date()). getTime(); Cela forcera l'url à avoir une url de requête différente à chaque fois, ce qui (en théorie) devrait forcer le navigateur à re-demander et à re-télécharger.

1

Par chance, voyez-vous cela avec IE8 spécifiquement? Nous l'avons vu montrer ce comportement où la mise en cache n'était auparavant pas un problème.

En règle générale, il peut être effacé avec quelques étapes: explicitement dire au navigateur de ne pas mettre en cache via des en-têtes HTTP, et expirant également la page immédiatement. Google l'en-tête "pragma no-cache", il y a généralement quelques lignes différentes que vous devez ajouter pour couvrir tous les navigateurs.

+0

En fait, cela se produit dans tous les navigateurs, je n'ai pas vraiment traité jusqu'à présent. Mon collègue utilise IE7 et mon patron et j'utilise Firefox, même problème. Merci pour la direction. – somacore

Questions connexes