120 votes

Que fait l'ajout de "? V = 1" aux URL CSS et Javascript dans les balises link et script?

J'ai été à la recherche à un standard HTML 5 de modèle (à partir de http://html5boilerplate.com/) et remarqué l'utilisation d' "?v=1" dans les Url en se référant à des fichiers CSS et Javascript.

  1. Ce n'ajoutant "?v=1" CSS et Javascript Url dans le lien et les balises de script?
  2. Pas toutes les Url Javascript ont l' "?v=1" (exemple à partir de l'exemple ci-dessous: js/modernizr-1.5.min.js). Est-il une raison pourquoi c'est le cas?

Échantillon de leur index.html:

<!-- CSS : implied media="all" -->
<link rel="stylesheet" href="css/style.css?v=1">

<!-- For the less-enabled mobile browsers like Opera Mini -->
<link rel="stylesheet" media="handheld" href="css/handheld.css?v=1">

<!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects -->
<script src="js/modernizr-1.5.min.js"></script>

<!------ Some lines removed ------>

<script src="js/plugins.js?v=1"></script>
<script src="js/script.js?v=1"></script>

<!--[if lt IE 7 ]>
  <script src="js/dd_belatedpng.js?v=1"></script>
<![endif]-->


<!-- yui profiler and profileviewer - remove for production -->
<script src="js/profiling/yahoo-profiling.min.js?v=1"></script>
<script src="js/profiling/config.js?v=1"></script>
<!-- end profiling code -->

Merci à l'avance.

156voto

Nick Craver Points 313913

Ce sont généralement assurez-vous que le navigateur reçoit une nouvelle version lorsque le site est mis à jour avec une nouvelle version, par exemple dans le cadre de notre processus de fabrication nous aimerions avoir quelque chose comme ceci:

/Resources/Combined.css?v=x.x.x.buildnumber

Depuis cela change avec chaque nouveau code de pousser, le client est obligé de saisir une nouvelle version, tout simplement parce que de la chaîne de requête. Regardez sur cette page (au moment de cette réponse) par exemple:

<link ... href="http://sstatic.net/stackoverflow/all.css?v=c298c7f8233d">

Je pense qu'au lieu d'un numéro de révision de l', DONC l'équipe est allé avec un fichier de hachage, ce qui est encore mieux, même avec une nouvelle version, les navigateurs n'forcés de prendre une nouvelle version quand le fichier fait les changements.

Ces deux approches permettent de définir l'en-tête de cache quelque chose de ridiculement long, disons 20 ans...et pourtant, quand elle change, vous n'avez pas à vous soucier des qu'en-tête de cache, le navigateur voit un autre de la chaîne de recherche et la traite comme un autre, un nouveau fichier.

19voto

Amr ElGarhy Points 12696

Assurez-vous que vous obtenez le droit de la dernière version du css ou js.

Cela signifie que vous dire au navigateur que vous avez mis à jour le fichier pour ne pas utiliser la version en cache.

Et plus tard, vous pouvez les ajouter en "?v=2" si vous avez une version plus récente et "?v=3", "?v=4" et ainsi de suite.

Notez que vous pouvez utiliser n'importe quel querystring"v" n'est pas un must pour exemple:

"?blah=1" fonctionnera aussi bien.

Et

"?xyz=1002" fonctionnera.

Et c'est une technique courante de nos jours parce que les navigateurs sont maintenant en cache les fichiers css et js mieux et plus longtemps.

13voto

Art Points 145

Le hachage solution est sympa, mais pas vraiment lisible lorsque vous voulez savoir quelle est la version de fichier est assis dans votre dossier web. La solution est-à - date/time le timbre de votre version de sorte que vous pouvez facilement le comparer à votre serveur de fichiers.

Par exemple, si votre .js or .css le fichier est daté 2011-02-08 15:55:30 (dernière modification) puis la version doit être égale à .js?v=20110208155530

Doit être facile à lire les propriétés de n'importe quel fichier de n'importe quelle langue. Dans ASP.Net il est vraiment facile...

".js?v=" + File.GetLastWriteTime(HttpContext.Current.Request.PhysicalApplicationPath + filename).ToString("yyMMddHHHmmss");

De coz obtenir joliment refait dans les propriétés/fonctions de premier et vous partez. Plus d'excuses.

Bonne chance, Art.

7voto

Robin Day Points 39440

Les fichiers Javascript sont souvent mis en cache par le navigateur pour beaucoup plus longtemps que vous pourriez vous attendre.

Cela peut souvent entraîner un comportement inattendu lors de la sortie d'une nouvelle version de votre fichier JS.

Par conséquent, il est de pratique courante pour ajouter un paramètre de chaîne de Requête de l'URL pour le fichier javascript. De cette façon, le navigateur met en cache le fichier Javascript avec v=1. Lors de la sortie d'une nouvelle version de votre fichier javascript vous modifiez l'url pour v=2 et le navigateur va être obligé de télécharger une nouvelle copie.

7voto

Tapan kumar Points 877

Afin de répondre à des questions;

"?v=1" ce qui est écrit seulement en raison de télécharger une nouvelle copie de la css et les js fichiers au lieu d'utiliser de la mémoire cache du navigateur.

Si vous parlez de ce paramètre de chaîne de requête à la fin de votre feuille de style ou le fichier js puis il force le navigateur à télécharger un nouveau fichier, en Raison de laquelle les changements récents dans le .css et .js, les fichiers sont fabriqués effetive dans votre navigateur.

Si vous ne faites pas de cette gestion des versions, alors vous pouvez avoir besoin d'effacer le cache de rafraîchir la page pour voir les changements récents dans ces fichiers.

Voici un article qui explique cette chose Comment et Pourquoi faire de gestion des versions pour les fichiers CSS et JS

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: