假设我点击 / demo url然后它将转到控制器n从数据库表中取出data1,其中有400个数据,类似数据2,有1200个数据。 结构以这种方式工作首先它从控制器获取来自db的1200 + 400数据然后用这些400 + 1200数据进行查看n使用foreach它在modal1中显示400个模数中的1200数据...它加载大数据,它加载缓慢的方式。这就是为什么我尝试拆分datas.so我为每个按钮调用使用了ajax但是对控制器的ajax调用在localhost中工作得很好但在真正的ip中不起作用。 有没有更好的方法/解决方案来减少加载时间??
我的结构 在控制器中
$data1(here data is around 500)
$data2 (here data is around 1200)
return view(viewname’,compact('data1','data2'));
在视图中
<button class=”t1”>
<button class=”t2”>
@include(‘modal1’)
@include(‘modal2’)
在modal1
@foreach($data1 as $v)
{{$v->name}}
@endforeach
在modal2
@foreach($data1 as $v)
{{$v->name}}
@endforeach
这里当我点击按钮它打开modal1..n当我点击另一个按钮它打开modal2.i使用模态中的数据表。(有搜索,分页)
答案 0 :(得分:0)
当我们使用Datatable时,所有数据首先加载,然后用分页显示。如果您拥有大量数据,这可能会花费很多时间。当您使用分页时,如果根据分页的数据仅显示,那么它将节省您的加载时间。
您可以使用此包来解决此问题: https://github.com/yajra/laravel-datatables
答案 1 :(得分:0)
要改进 Laravel 网站,您必须考虑很多事情。
在您的应用程序中使用预先加载
在 get() 方法的查询中使用 ->cursor()。
例如:
$data = DB::table("users")
->select('*')
->cursor();
使用缓存
$data_key = "any-key-variable";
if (Cache::has($data_key)) {
$getData = Cache::get($data_key);
}
else {
$getData = DB::table("users")
->select('*')
->cursor();
Cache::put($data_key, $getData,720);
}
}
另外,在控制器的构造函数中使用 this 或调用函数
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '3000');
ini_set('request_terminate_timeout', '3000');
例如
公共函数__construct() {
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '3000');
ini_set('request_terminate_timeout', '3000');
}