我正在使用laravel 5.1,我想将ajax get请求调用作为管理仪表板。
我使用数据库查询进行响应返回,并使用ajax获取表格和图表上的数据,因为我有日期过滤器和其他过滤器。
当我点击“应用”按钮时,我的应用程序加载速度太慢,这会在页面上生成不同类型的请求。
所以这就是我在做的事。
$data = DB::table("leads")
->select((array(DB::Raw('DATE(leads.created_at) as creation'),
DB::Raw("COUNT(leads.id) as total_leads"), DB::Raw("leads.id as id"),DB::Raw("leads.customer_name as customer_name" ),DB::Raw("leads.city as city"), DB::Raw("leads.email as email"),DB::Raw("leads.contact as contact"),DB::Raw("leads.source as source"),DB::Raw("leads.campaign_name as campaign"),DB::Raw("leads.ad_group as ad_group"),DB::Raw("leads.ad as ad"),DB::Raw("leads.keyword as keyword") )))
->where("leads.created_at",">=",$startDate)
->where("leads.created_at","<",$endDate)
->groupBy("leads.created_at")
->orderBy("leads.created_at","desc")
->get();
return view("dashboard",compact("data"));
现在,如果我使用此查询来获取ajax调用,看起来像这样
$(document).ready(function(){
$(".applyBtn").on("click",function(){
var i = $('input[name="daterangepicker_start"]').val();
var e = $('input[name="daterangepicker_end"]').val();
console.log(i);
console.log($("input[id=daterangepicker_start1]").val($('input[name="daterangepicker_start"]').val()));
console.log($("input[id=daterangepicker_end1]").val($('input[name="daterangepicker_end"]').val()));
var data = "daterangepicker_start="+i+"&daterangepicker_end="+e;
$.ajax({
type:"GET",
data:data,
url:'{{ URL::to("/date1") }}',
success:function(data)
{
$("#ack").html(data);
}
})
我正在返回另一个刀片模板来替换div ack。
这个东西在localhost中工作得很好,它的工作速度比在服务器上加载要快得多,但是当我在linode服务器上加载它时,这个查询工作得太慢了。我已经安装了调试栏,它说400毫秒用于加载所有查询。服务器上是否存在任何配置问题,因为它仅使用之前配置的apache。
我在几个页面上有太多的数据库查询,比如仪表板,引导页面。
我需要做些什么来优化我的laravel5.1应用程序,以及如何使用ajax轻松地提供它。
请告诉我任何解决方案,以便ajax发出的加载请求花费更少的时间来加载拉动数据视图的其他刀片模板。
答案 0 :(得分:0)
您的刀片文件可能会成为一个大问题。请正确设置文件并将js,css渲染到一个主刀片文件本身,而不是渲染ajax的刀片模板上。
如果页面加载了在加载时初始化的javascript,则始终记得启动需要在不同点击上呈现的js。再次进入你的ajax成功函数,启动特定元素的javascript。