【发布时间】:2014-02-26 10:34:55
【问题描述】:
我有一个使用 ajax 将产品添加到购物车的 woocommerce 安装,但是将产品添加到购物车需要很长时间(7-10 秒)。
我开始记录并意识到每次将产品添加到购物车时都会运行数百个 SQL 查询,而这一直是需要的。我相信应该可以在不运行这么多查询的情况下将产品添加到购物车。
我注意到 WPML 可能是罪魁祸首,但我不太擅长 SQL。
有没有更优化的方式来使用 AJAX 添加产品?这是我今天使用的代码:
// AJAX buy button for variable products
function setAjaxButtons() {
$('.single_add_to_cart_button').click(function(e) {
var target = e.target;
loading(); // loading
e.preventDefault();
var dataset = $(e.target).closest('form');
var product_id = $(e.target).closest('form').find("input[name*='product_id']");
values = dataset.serialize();
$.ajax({
type: 'POST',
url: window.location.hostname+'/?post_typ=product&add-to-cart='+product_id.val(),
data: values,
success: function(response, textStatus, jqXHR){
loadPopup(target); // function show popup
updateCartCounter();
},
});
return false;
});
}
这是每次运行的一些 SQL(有数千行但我不能全部发布):
FROM wp_icl_translations
WHERE element_id='1354' AND element_type='post_product'
1935 Query SELECT post_type FROM wp_posts WHERE ID=1354
1935 Query SELECT post_type FROM wp_posts WHERE ID=1354
1935 Query SELECT post_type FROM wp_posts WHERE ID=1354
1935 Query SELECT post_type FROM wp_posts WHERE ID=162
1935 Query SELECT * FROM wp_posts WHERE ID = 1639 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1639)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1442)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1443)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1444)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1445)
1935 Query SELECT * FROM wp_posts WHERE ID = 1694 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1694)
1935 Query SELECT * FROM wp_posts WHERE ID = 1726 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1726)
1935 Query SELECT * FROM wp_posts WHERE ID = 1603 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1603)
1935 Query SELECT * FROM wp_posts WHERE ID = 1695 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1695)
1935 Query SELECT * FROM wp_posts WHERE ID = 1442 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1446 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1446)
1935 Query SELECT * FROM wp_posts WHERE ID = 1443 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1444 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1445 LIMIT 1
1935 Query SELECT post_type FROM wp_posts WHERE ID=1441
1935 Query SELECT trid, language_code, source_language_code
FROM wp_icl_translations
WHERE element_id='1441' AND element_type='post_product'
1935 Query SELECT post_type FROM wp_posts WHERE ID=1441
1935 Query SELECT post_type FROM wp_posts WHERE ID=1441
1935 Query SELECT post_type FROM wp_posts WHERE ID=1441
1935 Query SELECT post_type FROM wp_posts WHERE ID=162
1935 Query SELECT * FROM wp_posts WHERE ID = 1652 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1652)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1530)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1531)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1532)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1533)
1935 Query SELECT * FROM wp_posts WHERE ID = 1696 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1696)
1935 Query SELECT * FROM wp_posts WHERE ID = 1716 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1716)
1935 Query SELECT * FROM wp_posts WHERE ID = 1577 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1577)
1935 Query SELECT * FROM wp_posts WHERE ID = 1697 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1697)
1935 Query SELECT * FROM wp_posts WHERE ID = 1530 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1564 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1564)
1935 Query SELECT * FROM wp_posts WHERE ID = 1531 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1532 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1533 LIMIT 1
140226 11:34:04 1935 查询
SELECT post_type FROM wp_posts WHERE ID=1529
1935 Query SELECT trid, language_code, source_language_code
FROM wp_icl_translations
WHERE element_id='1529' AND element_type='post_product'
1935 Query SELECT post_type FROM wp_posts WHERE ID=1529
1935 Query SELECT post_type FROM wp_posts WHERE ID=1529
1935 Query SELECT post_type FROM wp_posts WHERE ID=1529
1935 Query SELECT post_type FROM wp_posts WHERE ID=162
1935 Query SELECT * FROM wp_posts WHERE ID = 1638 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1638)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1342)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1343)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1344)
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1345)
1935 Query SELECT * FROM wp_posts WHERE ID = 1698 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1698)
1935 Query SELECT * FROM wp_posts WHERE ID = 1727 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1727)
1935 Query SELECT * FROM wp_posts WHERE ID = 1628 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1628)
1935 Query SELECT * FROM wp_posts WHERE ID = 1699 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1699)
1935 Query SELECT * FROM wp_posts WHERE ID = 1342 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1352 LIMIT 1
1935 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1352)
1935 Query SELECT * FROM wp_posts WHERE ID = 1343 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1344 LIMIT 1
1935 Query SELECT * FROM wp_posts WHERE ID = 1345 LIMIT 1
1935 Query SELECT post_type FROM wp_posts WHERE ID=1340
1935 Query SELECT trid, language_code, source_language_code
【问题讨论】:
标签: jquery sql ajax wordpress woocommerce