Question

Je fais un projet Django et à l'aide-Djangos css ( http://github.com / dziegler / django-css ) et Sass ( http://sass-lang.com/). Les fichiers Sass sont servis dans le développement à l'aide django-css. Je veux écrire une routine JavaScript qui toutes les secondes récupérer les actifs CSS. Le but de cela est que le concepteur peut modifier les fichiers Sass, cliquez sur Enregistrer, et voir le résultat dans le navigateur immédiatement, sans applications de commutation et en appuyant sur refresh.

Fondamentalement, je besoin d'un moyen de JavaScript pour forcer le navigateur à retélécharger certains fichiers sans faire rafraîchir la page. Est-ce possible?

Était-ce utile?

La solution

La façon la plus simple est généralement d'ajouter un paramètre unique, sur l'url, je viens d'utiliser souvent un horodatage

var timestamp = (new Date()).getTime();
url += '?time=' + timestamp;

Il suffit de faire attention si vos demandes ont déjà des paramètres, vous devez ajouter &time=' + timstamp à la place.

Le navigateur ne peut pas mettre en cache la demande parce que chaque demande semble unique.

Autres conseils

ne sont pas tous les caches en cache le contenu avec une chaîne de requête.

Steve Souders recommande « ... éviter une querystring pour les ressources cacheable ». Il a constaté que, dans ce cas 5-20% des demandes ne seront pas mises en cache. Les chaînes de requête, en particulier, ne fonctionnent pas du tout avec quelques CDNs pour l'invalidation du cache.

La meilleure façon est de générer un MD5 avec le nom du fichier javascript pour chaque version par exemple.

{path to script file}/filename-{md5 hash}.js

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top