Ce n'ajoutant “?v=1” à la CSS et Javascript Url dans le lien et les balises de script?
J'ai été à la recherche à un standard HTML 5 de modèle (à partir de http://html5boilerplate.com/) et a remarqué l'utilisation de "?v=1"
dans les Url en se référant à des fichiers CSS et Javascript.
- Ce n'ajoutant
"?v=1"
CSS et Javascript Url dans le lien et les balises de script? - Pas toutes les Url Javascript ont la
"?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 d'avance.
bonnes réponses, j'ai appris quelque chose de nouveau aujourd'hui 🙂
OriginalL'auteur maxyfc | 2010-08-12
Vous devez vous connecter pour publier un commentaire.
Ce sont habituellement 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:
Car 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:
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 changements.
Ces deux approches vous 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.
?v=1
)Un cache de contrôle d'en-tête envoyé hier vous ne pouvez pas dire le client le fichier a changé aujourd'hui (le client n'aurez même pas à vérifier), une URL peut. Pouvez-vous expliquer ce que je suis absent?
La façon dont ces fichiers sont mis en cache est jamais, qui signifie que le client est en aucun de la vérification pour voir si le fichier est modifié. Cela signifie qu'ils seraient jamais obtenir le fichier mis à jour...à moins que l'URL a changé, qui est ce qui se passe avec la technique ci-dessus. Vous bénéficiez d'un maximum de vie du cache sur le client (le moins de requêtes HTTP), mais le client est mis à jour instantanément, lorsque le fichier est effectivement modifié. Exactement comment voulez-vous accomplir tout cela à l'aide de en-têtes?
Un Débordement de pile de 5 millions de visiteurs par mois, votre approche serait d'avoir 2 conséquences: a) beaucoup plus de demandes et les données envoyées vers/à partir de nos serveurs, et b) les utilisateurs ne obtenir de nouveaux JavaScript/CSS (par exemple, lorsque nous avons eu un bug, ou le code HTML de modifications besoin de nouvelles JS/CSS). Naturel d'expiration n'est vraiment pas une option ici. La méthode que vous proposez serait techniquement beaucoup moins efficace et le résultat est réelle de l'utilisateur de bugs, sur une base régulière...ce n'est pas vraiment acceptable sur n'importe quel site majeur (il ne faut om aucun site vraiment).
v représente juste "version" pour nous, c'est un choix complètement arbitraire. Toute requête à la valeur de chaîne de travail, par exemple, il pourrait tout aussi bien être ?jejdutogjesudo=
OriginalL'auteur Nick Craver
Cela permet de s'assurer que vous obtenez la dernière version à partir de la css ou js fichier à partir du serveur.
Et plus tard, vous pouvez ajouter
"?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"
fonctionne.Et c'est une technique courante, car les navigateurs sont maintenant en cache les fichiers css et js mieux et plus longtemps.
OriginalL'auteur Amr Elgarhy
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 de
date/time
timbre de votre version de sorte que vous pouvez facilement le comparer à votre serveur de fichiers.Par exemple, si votre
.js or .css
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...
De coz obtenir joliment refait dans les propriétés/fonctions de premier et vous partez. Plus d'excuses.
Bonne chance, Art.
réponse tardive, mais pour les nouveaux arrivants, quelle que soit le site constructeur / système de construction que vous utilisez doit avoir un moyen pour obtenir la date en millisecondes, ce qui vous pouvez utiliser la version, si vous n'êtes pas à l'aide d'un générateur//système de construction, vous devez écrire vous-même.
OriginalL'auteur Art
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.
OriginalL'auteur Robin Day
Afin de répondre à vous 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
OriginalL'auteur Tapan kumar
Au cours du développement / tests de nouvelles versions, le cache peut être un problème, car le navigateur, le serveur et même parfois la 3G de sfr (si vous ne déploiement mobile) met en cache le contenu statique (par exemple, JS, CSS, HTML, img). Vous pouvez résoudre ce problème en ajoutant le numéro de version de nombres aléatoires ou d'horodatage pour l'URL de l'e.g: JSP: <script src="js/excel.js?temps=<%=new java.util.Date()%>"></script> Dans le cas où vous êtes en cours d'exécution HTML pur (au lieu du serveur des pages JSP, ASP, PHP) le serveur ne vous aide pas. Dans le navigateur, les liens sont chargés avant le JS s'exécute, par conséquent, vous devez supprimer les liens et de les charger avec JS
OriginalL'auteur Conete Cristian
Juste mes deux cents.
Comme vous pouvez le lire avant, le
?v=1
garantit que votre navigateur obtient la version 1 du fichier. Lorsque vous avez une nouvelle version, vous avez juste à ajouter un autre numéro de version et le navigateur va oublier l'ancienne version et les charges de la nouvelle.Il y a un gulp plugin qui prend soin de la version de vos fichiers pendant la phase de construction, de sorte que vous n'avez pas à le faire manuellement. Il est très pratique et vous pouvez facilement intégrer dans votre processus de build. Voici le lien gulp-annoter
OriginalL'auteur Phugo
Comme mentionné par d'autres, ce est utilisé pour le front-end de contournement du cache. Pour le mettre en oeuvre, j'ai personnellement trouver grunt-cache-buste mnp paquet utile.
OriginalL'auteur Ram