Pourquoi est-il pas d'option sûre pour la fonction de mixage comme il est pour la fonction de l'actif?
Because mix()
renvoie uniquement les URI par opposition à URL
Par conséquent, si utilisé par elle-même dans votre modèle de lame
<script src="{{ mix('js/app.js') }}"></script>
Il rendra comme
<script src="/js/app.js?id=c5ac0d032c3d7fe2f10e"></script>
et la navigateur va prendre n'importe quel régime (HTTP ou HTTPS) et th e nom de domaine à partir duquel il est servi. Je ne peux pas penser à une situation où vous voulez servir un actif avec un régime différent. De plus, de nos jours, vous voulez tout servir via HTTPS.
Maintenant, si vous voulez construire une URL complète à un actif il y a deux fonctions intégrées asset()
et secure_asset()
qui font exactement ce que leur nom l'indique:
>>> asset(mix('js/app.js'))
=> "http://domain.dev/js/app.js?id=c5ac0d032c3d7fe2f10e"
>>> secure_asset(mix('js/app.js'))
=> "https://domain.dev/js/app.js?id=c5ac0d032c3d7fe2f10e"
Malheureusement, la fonction de l'actif n'a pas cache busting ...
Encore une fois vous regardez ce problème. mix()
est responsable de l'URI et non du asset()
et utilisera le manifeste public/mix-manifest.json
, généré lors de la compilation de vos actifs, pour générer un chemin correct. Afin de tirer parti de la cache automatique busting dont vous avez besoin à la version de vos actifs au moment de la compilation avec Laravel mélange
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.version(); // You need to version assets if you want automatic cache busting
puis avant de mélanger v1.0.0 le nom d'un actif contiendrait le hachage
/js/app-c5ac0d032c3d7fe2f10e.js
avec v1.0.0 mélange et le hachage est maintenant dans un paramètre de requête
/js/app.js?id=c5ac0d032c3d7fe2f10e
Pour en savoir plus Versioning/Cache Busting
Pourquoi ne pas utiliser le contrôle de version pour le contournement du cache? – tompec