Prestashop类别页面加载速度太慢

时间:2014-03-18 08:08:16

标签: php mysql e-commerce prestashop

我已经将在线商店从1.4更新到1.5最新版本,但我有一些问题。当我加载特定类别页面时,产品具有不同的功能,它加载大约10秒钟。

缓慢加载类别:http://new.vikav.ee/en/103-cookingblocks(80多种产品)

正常加载类别:http://new.vikav.ee/en/96-kitchen-sinks(300多种产品)

9044.962 ms

SELECT SQL_NO_CACHE p.*,
       product_shop.*,
       stock.out_of_stock,
       IFNULL(stock.quantity, 0) AS quantity,
       MAX(product_attribute_shop.id_product_attribute) id_product_attribute,
       product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity,
       pl.`description`,
       pl.`description_short`,
       pl.`available_now`,
       pl.`available_later`,
       pl.`link_rewrite`,
       pl.`meta_description`,
       pl.`meta_keywords`,
       pl.`meta_title`,
       pl.`name`,
       MAX(image_shop.`id_image`) id_image,
       il.`legend`,
       m.`name` AS manufacturer_name,
       cl.`name` AS category_default,
       DATEDIFF(product_shop.`date_add`, DATE_SUB(NOW(), INTERVAL 30 DAY)) > 0 AS NEW,
                                                                             product_shop.price AS orderprice
FROM `ps_category_product` cp
LEFT JOIN `ps_product` p ON p.`id_product` = cp.`id_product`
INNER JOIN ps_product_shop product_shop ON (product_shop.id_product = p.id_product
                                            AND product_shop.id_shop = 1)
LEFT JOIN `ps_product_attribute` pa ON (p.`id_product` = pa.`id_product`)
LEFT JOIN ps_product_attribute_shop product_attribute_shop ON (product_attribute_shop.id_product_attribute = pa.id_product_attribute
                                                               AND product_attribute_shop.id_shop = 1
                                                               AND product_attribute_shop.`default_on` = 1)
LEFT JOIN ps_stock_available stock ON (stock.id_product = p.id_product
                                       AND stock.id_product_attribute = IFNULL(`product_attribute_shop`.id_product_attribute, 0)
                                       AND stock.id_shop = 1)
LEFT JOIN `ps_category_lang` cl ON (product_shop.`id_category_default` = cl.`id_category`
                                    AND cl.`id_lang` = 6
                                    AND cl.id_shop = 1)
LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product`
                                   AND pl.`id_lang` = 6
                                   AND pl.id_shop = 1)
LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product`)
LEFT JOIN ps_image_shop image_shop ON (image_shop.id_image = i.id_image
                                       AND image_shop.id_shop = 1
                                       AND image_shop.cover=1)
LEFT JOIN `ps_image_lang` il ON (image_shop.`id_image` = il.`id_image`
                                 AND il.`id_lang` = 6)
LEFT JOIN `ps_manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer`
WHERE product_shop.`id_shop` = 1
  AND cp.`id_category` = 103
  AND product_shop.`active` = 1
  AND product_shop.`visibility` IN ("both",
                                    "catalog")
GROUP BY product_shop.id_product
ORDER BY p.`date_add` ASC LIMIT 0,25
/var/www/web1080/html/vikav/classes/Category.php:659

使用FILESORT - 浏览了2544行

也许有人可以帮我优化这个查询,或者只是指出问题出在哪里?

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

prestashop中的一个大问题是糟糕的缓存管理系统,它几乎总是在同一时间进行写入和读取。

但是,最适合您的解决方案仍然是启用和优化此缓存。尝试启用默认值,然后添加apc(如果可以)。

如果您的产品不应该改变很多(例如在一天内多次),也尝试将SQL_NO_CACHE更改为SQL_CACHE