Comment version javascript (asp-ajout de la version) travail en ASP.NET Core, MVC
Il semble qu'il n'y a pas de dynamique de regroupement pris en charge dans la nouvelle MVC (lien), et il devrait être fait à l'aide d'une gorgée de la tâche. MVC appuie un nouvel attribut appelé asp-append-version
, mais je n'ai pas trouvé d'explication sur la façon dont il fonctionne. Je soupçonne que c'est le calcul de certaines de hachage du contenu du fichier et même les mises à jour après une modification de fichier. Est-il de la documentation sur comment ça marche?
Je suis aussi en se demandant comment il détecte les modifications de fichier ou si il a juste recalcule la valeur de hachage à chaque fois que le MVC analyse de rasoir de balisage.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier l'
LinkTagHelper
code source, où vous verrez que c'est essentiellement l'ajout d'une version de la chaîne de requête pour le href valeur par l'intermédiaire d'unFileVersionProvider
:La
FileVersionProvider
sera calculer la valeur de hachage du contenu du fichier à l'aide de laSHA256
algorithme. Il va ensuite les encoder et de l'ajouter à la chaîne de requête, comme dans:Le hash sera recalculé uniquement lorsque le fichier est modifié, il est ajouté à la cache, mais avec une date d'expiration de déclenchement basé sur un fichier de l'observateur:
Cet observateur est fourni par
HostingEnvironment.WebRootFileProvider
, qui met en œuvreIFileProvider
:Remarque: Vous pouvez voir les valeurs mises en cache par vous-même en inspectant les valeurs de la
IMemoryCache
:asp-append-version
ne fonctionne qu'avecWebRootFileProvider
. Est-il un moyen de le faire fonctionner avec des fichiers en dehors de lawwwroot
répertoire servi par unPhysicalFileProvider
?FileVersionProvider
qui vous permettrait de créer à l'aide de laIHostingEnvironment.ContentRootFileProvider
(même siFileVersionProvider
dépendIFileProvider
donc, en théorie, ça marcherait bien avec leContentRootProvider
). Je suppose que la balise aide a été conçu avec des fichiers de wwwroot dans l'esprit, peut-être vaut le coup de les atteindre MS sur github.Selon l'implémentation actuelle de FileVersionProvider, de hachage est ajouté uniquement à la relative chemin d'accès au fichier, par exemple
<script src="~/js/jquery.min.js" asp-append-version="true"></script>
Dans le cas où le chemin absolu, par exemple
https://code.jquery.com/jquery-3.1.1.js
, le hachage ne seront pas ajoutés.De Rasoir
Méthode d'Extension
public static string AddFileVersionToPath(this HttpContext context, string path)
var versionProvider = context.RequestServices.GetRequiredService<IFileVersionProvider>();
return versionProvider.AddFileVersionToPath(context.Request.Path, path);