Générer une version aléatoire d'une URL ("cache busting") avec JavaScript

Concept et utilisation

La fonction urlCacheBuster() permet de générer une version aléatoire d'une URL et de s'assurer que le navigateur ne charge pas des fichiers depuis le système de cache ("cache busting").

Fonction

urlCacheBuster()

Retourne une URL après avoir ajouté un paramètre de versionnage dont la valeur a été générée aléatoirement.

Syntaxe
urlCacheBuster(options);
Paramètre
options(Object)

Le paramètre options de la fonction urlCacheBuster() définit les propriétés de versionnage d'une URL.

Propriétés
url(String)

La propriété url du paramètre options définit l'URL à versionner.
Si cette propriété est omise, l'URL affichée sera utilisée par défaut.

versionKey(String)

La propriété versionKey du paramètre options définit la clé du paramètre de requête inséré dans l'URL en tant que clé de versionnage.
Si cette propriété est omise, la clé "cacheBuster" sera utilisée par défaut.

Exemple de versionnage d'une URL

var options = {
  url: 'https://www.domaine.ext',
  versionKey: 'cacheBuster'
};

urlCacheBuster(options);

// renvoie par exemple : 'https://www.domaine.ext?cacheBuster=6345695142079339'

Code source de la fonction

function urlCacheBuster(o) {
  o = o || {};
  var u = o.url || window.location.href,
      q = (o.versionKey || 'cacheBuster') + '=' + Math.floor(Math.random() * 10000000000000000);
  if (/\?$/.test(u)) {
    u += q;
  } else if (/\?#/.test(u)) {
    u = u.replace('#', q + '#');
  } else {
    u = u.replace(new RegExp('(\\?|&)'+'q'+'=[0-9]+'),'');
    q = ((u.indexOf('?') > -1) ? '&' : '?') + q;
    if (u.indexOf('#') > -1) {
      u = u.replace('#', q + '#');
    } else {
      u += q;
    }
  }
  return u;
}
^