如何只加载资产一次。如果我打开仪表板,所有资产都将被加载,然后我打开其他页面,而不是第二次加载资产..
如何在刀片模板中只加载一次资源?
例如:
template.blade.php
@yield('css')
@yield('js')
dashboard.blade.php
@section('css')
//some code here
@endsection
group.blade.php
@section('css')
//some code here
@endsection
任何帮助我? 感谢
答案 0 :(得分:2)
这不是HTTP协议的工作原理。 HTTP协议是无状态的,这意味着用户在访问dashboard
之前没有记住用户访问group
。
唯一的保证是,当用户访问仪表板时,仪表板的CSS将被缓存,因此对它们的后续请求将从缓存而不是从Web服务器加载它们。
但是,您必须假设用户可以首先访问group
,因此所有组中必需的CSS必须包含在组模板中,即使这意味着您将要复制每个页面都有一些CSS。
如果您真的只想加载每个资产一次,那么您应该使用像jquery mobile这样的JavaScript库来指定通过AJAX加载的不同部分。然而,如何以及为什么在这里覆盖的问题太广泛了。
答案 1 :(得分:0)
为什么要用@yield加载资产?只需将其加载到您的布局上即可。 例如app.blade.php,它位于layouts文件夹中。
<强> app.blade.php 强>
<html>
<head>
<link rel="stylesheets" href="{{asset('css/style.css')}}"/>
<title>title goes here</title>
</head>
<body>
@yield('content')
<script src="{{asset('js/jquery.js')}}"></script>
</body>
</html>
然后在任何视图上加载布局,例如仪表板
<强> dashboard.blade.php 强>
@extends('layouts.app) //it loads all template data from layouts(app.blade.php)
@section('content')
content for dashboard
@endsection