Question

J'ai remarqué une solution qui pourrait vous aider à contrôler la mise en cache de fichiers JavaScript .

Il y a une méthode de la crutilité. MakebrowsCachefelaSafelayoutsurl . MSDN dit cette méthode: < em> retourne une nouvelle URL qui ne sera pas mise en cache par le navigateur lorsque le fichier associé change .

Cela semble génial. J'ai essayé d'utiliser cette méthode comme si:

 <script type="text/jscript" src="<%=SPUtility.MakeBrowserCacheSafeLayoutsUrl("projectName/scripts/plugins/tapes_report_definition.js", false)%>" ></script>

Alors, ça a fonctionné. Il a généré? Rev= {md5hash_of_my_file.js} partie à la fin de l'URL. Mais après avoir changé ce fichier .js, le nouveau hachage MD5 n'a pas été généré. ? Rev partie est resté la même chose. J'ai essayé IISRESET, redéployer, etc., mais rien n'a aidé. J'ai vérifié cette méthode avec réflecteur et j'ai appris que MakebrowserCachefelayoutsurl ne génère pas de hash MD5 tout le temps, mais l'obtient de l'objet interne SPVolitileCache.

Je pensais pouvoir effacer ce cache en supprimant tous les fichiers à l'intérieur de ces deux dossiers:

  1. % Appdata% \ Microsoft \ WEB Server Extensions \ Cache
  2. % userprofile% \ AppData \ local \ Microsoft \ WebSitecache

    Suppression n'a pas aidé.Sputilité.LakeBrowserCacheFelayoutsURL retourne toujours la même valeur après que le fichier JavaScript est modifié.

    J'ai trois questions:

    1. Comment puis-je rafraîchir SpvolitileCache après tout?
    2. Comment forcez-vous la sputilité.MakeBrowserCaSafelayoutsurl génère Nouveau? rev= sans purger le cache?
    3. Compte tenu de tout ce qui précède, il est même logique d'utiliser la crutilité.MakeBrowserCacheafelayoutsurl?

      Toute information supplémentaire sera grandement appréciée!

Était-ce utile?

La solution

Je l'ai vérifié à nouveau et je confirme que cette méthode est totalement viable.L'URL d'un fichier est rafraîchie après IISRESET.C'est exactement ce que je voulais voir.

Autres conseils

Je voudrais ajouter ceci tout comme un commentaire mais Stackexchange ne le permettra pas. Donc, voici ma réponse: pour que quiconque cherche à résoudre le problème des éléments de script mis en cache dans une partie Web d'éditeur de contenu (ou d'un fichier jslink à un fichier .js), sachez que la méthode SPUTILLY.MAKEBROSERCACHESEURL est une méthode du serveur et doit être intégré sur une page ASPX. Assurez-vous que vous comprenez que vous ne pouvez pas simplement plonger le code dans un fichier .js ou votre partie Web de la rédaction de contenu et faites-la fonctionner. Ce ne sera pas.

Cela étant dit, la méthode est vraiment sans valeur, car vous pourriez également simplement utiliser la balise ScriptLink. ScriptLink ajoutera le? Rev pour vous. La seule fois que vous pourriez être tenté d'utiliser cette méthode est si vous incorporez des balises de script dans une page que vous ne devriez jamais faire. Cela va totalement contre l'ensemble du cadre de SOD et des meilleures pratiques et ne travaillera probablement pas avec MDS.

La raison pour laquelle j'ai trouvé cette page était parce que j'ai une partie Web de formulaire INFOPATH sur une page et que le développeur précédent a utilisé un fichier .js distinct pour faire quelques boutons pour cela. Le fichier .js pour les boutons est référencé dans une partie Web de l'éditeur de contenu. C'est probablement un scénario courant, mais il est problématique car la référence de fichier n'a pas de fuite? Rev sauf s'ils sont ajoutés manuellement. Sauf s'il y a une méthode latérale actuelle qui aide à générer une sorte de? Rev, et je ne vois pas comment il pourrait y avoir, mon vote est que cette méthode est inutile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top