我正在使用高级自定义字段和转发器插件构建一个wordpress网站。在使用转发器插件重新组织数据后,我设法将此查询放在一起。当单击页面上的链接并通过ajax将结果加载到浮动窗口(仅使用绝对定位的div)时,将触发下面的查询。我遇到的问题通常是我第一次点击链接,结果有时需要2-4秒才能显示。第一次单击后,结果似乎加载速度更快,但即使这样也不一致。有时它很快,有时很慢。
在Chrome中,当我在“网络”标签下打开控制台时,我看到它在650毫秒到4.02秒之间等待。相当激烈的结果。
从我读过的内容来看,不是导致它加载缓慢的ajax。它很可能是后端的东西。我认为我们正在运行最新版本的Wordpress和MySQL 5.7。当我直接进入子页面时,结果看起来非常快。如果有人建议如何提高出现ajax结果的速度,我愿意接受建议。
我也不是在查询大量数据。我的数据集非常小,总共不到100条记录。这应该非常简单快捷。
查询中的$ stateloc变量是我通过查询字符串传递给浮动窗口中加载的子页面的状态缩写。这是子页面上的查询。
$rows = $wpdb->get_results($wpdb->prepare(
"SELECT *
FROM $wpdb->posts
JOIN $wpdb->postmeta on $wpdb->posts.ID = $wpdb->postmeta.post_id
WHERE $wpdb->posts.post_type = 'plfmaps'
AND $wpdb->posts.post_status = 'publish'
AND meta_key LIKE '%s'
AND meta_value = %s
",
'locations_%_state', // meta_name: $ParentName_$RowNumber_$ChildName
"$stateloc" // meta_value: 'type_3' for example
));
我正在使用jquery 1.10.2。
这是我在主页面上使用的ajax调用。
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j( ".statetips" ).click(function(e) {
var statewindow = e.target.id;
console.log(statewindow);
$j.ajax({
url: '/development-map/locations/',
localCache: true,
type: 'GET',
data: 'stateloc='+statewindow,
beforeSend:function(){
// this is where we append a loading image
$j('#statelocinfo').html('<div class="loading"><img src="/images/loading.gif" alt="Loading..." /></div>');
},
success: function(data) {
//called when successful
$j('#ajax-panel').empty();
$j('#statelocinfo').html(data);
},
error: function(e) {}
});
e.preventDefault();
});
});