为什么混合功能没有安全选项,就像资产功能一样?现在我只是复制了帮助器并编写了我自己的mix_secure函数,但我很惊讶没有其他人偶然发现了这个问题呢?可悲的是,资产功能没有缓存破坏...
任何想法/想法?
干杯,
罗宾
答案 0 :(得分:2)
为什么混合功能没有像资产功能那样的安全选项?
因此,如果只在刀片模板中单独使用
<script src="{{ mix('js/app.js') }}"></script>
它将呈现为
<script src="/js/app.js?id=c5ac0d032c3d7fe2f10e"></script>
,浏览器将选择任何方案(HTTP或HTTPS)及其提供的域名。当您想要使用不同的方案提供资产时,我无法想到这种情况。如今,您希望通过HTTPS提供所有服务。
现在,如果您要构建资产的完整网址,则有两个内置函数asset()
和secure_asset()
,这些函数完全符合其名称所暗示的内容:
>>> 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"
可悲的是,资产功能没有缓存破坏...
你再次看错了。 mix()
负责URI而不是asset()
,它将使用资产清单public/mix-manifest.json
,它是在编译资产时生成的,以生成正确的路径。为了利用自动缓存清除,您需要在编译时使用laravel mix
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
然后在混合v1.0.0之前,资产的文件名将包含散列
/js/app-c5ac0d032c3d7fe2f10e.js
使用mix v1.0.0及更高版本,哈希现在位于查询参数
中/js/app.js?id=c5ac0d032c3d7fe2f10e