Nous essayons d'obtenir le scénario suivant fonctionnant:
Nous utilisons ASP: scriptManager / compositesCrips pour combiner nos scripts en quelques blocs de script, mais après chaque déploiement sur le système de test, nous avons des problèmes avec des testeurs qui ne reçoivent pas de versions mises à jour de CSS et JavaScript (cache de navigateur). Pour le CSS, nous avons défini notre propre contrôle utilisateur CSS qui appendez un paramètre SITSVersion "? V = 1.0.190" par exemple à l'URL CSS. Ce siteVersion est défini dans web.config / appSettings et est heurté sur chaque déploiement. P>
Nous voulions pouvoir utiliser la même stratégie pour Javascripts, mais jusqu'à présent, je n'ai eu aucun succès.
Lorsque vous rendant la balise de script. Le scriptManager rend P> étant donné que le siteversion configuré actuel était 1.0.190, je voudrais que cela rendrait p> Comment puis-je obtenir sur la sortie HTML "Script" du gestionnaire de script afin que je puisse le changer?
Il ne semble pas être présent dans les trucs rendu dans le rendu, renduchildren ou rendufrontrol p> le vôtre
Andreas p> p>
3 Réponses :
Je vais suggérer un APROCHE différent. La chape est votre problème, puis changez l'en-tête de cache.
Voici un exemple que je fais et tes tester et ses œuvres très bien. Sur le global.aSax au début de l'appel ...
Le problème avec cette approche est que le navigateur finira ensuite par faire de nombreux voyages ronds inutiles sur le serveur Web uniquement pour savoir que le fichier n'a pas été modifié depuis la dernière fois. Sur un site Web non trivial, cela peut avoir un impact significatif sur la performance du site (voyages ronds = mauvais). L'avantage de l'utilisation de l'URL versionED est que vous pouvez mettre en cache les scripts de manière très agressive et ne forcez que le navigateur de faire un aller-retour lorsque le script a été mis à jour (en augmentant le numéro de version).
J'ai creusé dans le réflecteur pendant un peu et cela ressemble à ceci est malheureusement une chose délicate à ajouter. MM n'a pas fourni de bons points d'extension que je pouvais trouver. Toutefois, si vous êtes prêt à recourir à un joli piratage de réflexion, l'ajout de la commande suivante pour ScriptManager devrait faire le truc: puis pour connecter cet adaptateur de commande, vous devrez créer Un fichier web.Browser et mettez-le dans votre dossier App_Browersers sur le site Web. Le fichier Web.Browser devrait ressembler à quelque chose comme ceci: P> <browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.ScriptManager"
adapterType="MyNamespace.VersionedScriptManagerAdapter">
</adapter>
</controlAdapters>
</browser>
</browsers>
+1 andy je vote votre réponse parce que c'est plus proche de la question, et parce que sa meilleure personne obtient la prime si Andreas oublie d'en choisir un.
D'une manière ou d'une autre, mon extrait de web.Browser ne l'a pas fait dans mon poste d'origine. Voici ce que cela ressemblerait à:
Ce code enfin sa ne fonctionne pas! Je pense que c'est avoir besoin de plus de travail et de tests.
Avez-vous confirmé que l'adaptateur de contrôle est configuré? Essayez de définir un point d'arrêt dans la méthode onPrérender de l'adaptateur et vérifiez que le débogueur frappe le point d'arrêt. Si ce n'est pas le cas, cela signifie que votre fichier .Browser n'est pas configuré correctement. Le fichier .Browser doit vivre dans le dossier App_Browser de votre site Web ...
Une solution beaucoup plus simple dans la page de votre page fonctionne bien pour moi:
-1 Vous ouvrez une prime et vous ne sélectionnez même pas une réponse même s'il y a du travail! très mauvaise attitude.