如何只载一次laravel 5.3?

时间:2017-04-15 02:14:59

标签: laravel laravel-5.3

如何只加载资产一次。如果我打开仪表板,所有资产都将被加载,然后我打开其他页面,而不是第二次加载资产..

如何在刀片模板中只加载一次资源?

例如:

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

任何帮助我? 感谢

2 个答案:

答案 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