【问题标题】:How to improve Magento Ajax Performance?如何提高 Magento Ajax 性能?
【发布时间】:2012-10-16 11:51:18
【问题描述】:

我目前正在为 Magento 开发一个 ajax 插件,想知道如何提高它的性能。让我们从一个例子开始。我想在外部页面上显示购物车中的商品数量。或者一个已经通过整页缓存呈现并且需要通过 JavaScript Ajax 请求更新购物车信息的页面。

为此,我看到了两种方法。

最大限度地使用 Magento 控制器

class AFCustom_CartInfo_AjaxController extends Mage_Core_Controller_Front_Action {

    public function indexAction() {
      header('Cache-Control: no-cache, must-revalidate');
      header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
      header('Content-Type: text/html; charset=utf-8');

      $out = $this->__('My Cart');
      if (Mage::helper('core')->isModuleOutputEnabled('Mage_Checkout')) {
        $count = Mage::getSingleton('checkout/cart')->getSummaryQty() ? Mage::getSingleton('checkout/cart')->getSummaryQty()
            : MAGE::helper('checkout/cart')->getSummaryCount();
        if ($count == 1) {
          $out = $this->__('My Cart (%s item)', $count);
        } elseif ($count > 0) {
          $out = $this->__('My Cart (%s items)', $count);
        } else {
          $out = $this->__('My Cart');
        }
      }
      echo $out;
      exit;
    }
}

如您所见,我退出了控制器中的代码并且没有用户渲染布局。但是,请求仍然需要很长时间。我假设是因为它必须加载整个框架。有没有办法只加载 Magento 的最低要求来执行控制器?是否可以禁用不需要的布局引擎?我该怎么做?我还可以关闭哪些其他模块?

观察者更新会话 第二种解决方案是让观察者监听购物车 (checkout_cart_save_after) 中的变化并更新 PHP 会话变量。可以在一个小的自定义 PHP 脚本中读出。但是,我不确定如何轻松修补到与 Magento 使用的会话机制相同的会话机制中?我认为直接使用 $_SESSION 可能是不可取的,因为 Magento 会话可能会在其他地方处理。

你会怎么做?任何指针表示赞赏?

非常感谢!

【问题讨论】:

  • 我不认为只有加载最低要求,因为请求将通过整个 Magento 堆栈。我建议尝试像 APC 这样的东西来加速 Magento。如果它不是托管在 SSD 上,那么在运行任何大型 php 框架时都会有相当多的 HDD 文件加载延迟 - 缓存可以大大加快速度。如果这仍然太慢,您可能会破解一个解决方案,该解决方案使用另一个 $_SESSION 来存储购物车数据并使用普通的 ajax.php 返回 - 尽管这很棘手,因为您不应该像您所说的那样直接使用 Magento 会话。

标签: ajax performance magento


【解决方案1】:

您可以缓存您的请求并将数据缓存在观察购物车变化的观察者中,然后您只需请求块或您缓存在那里的任何内容并回显输出。

要点是您将输出预先填充到缓存中,而不是一遍又一遍地请求它。

【讨论】:

  • 所以从缓存加载我的输出字符串比检查购物车内容更快吗?购物车不是已经缓存了吗?您建议实现观察者仍然更快,必须将字符串保存在缓存中并简单地读取缓存项并在我的控制器中响应。
  • 是的,当您准备数据以读入缓存然后从缓存中读取时,它会更快。而不是从对象中读取它进行大量 mysql 查询或调用布局等。这就像去存储和读取放置在窗口上的标志:“我们有 45 件 sht 库存”而不是去在没有标志的情况下存放并询问卖家“你这里有多少垃圾?”卖家去库存看东西,回来告诉你“我们有 45 件 sh*t 库存”,然后你再问,卖家就像:“哦,不,我必须再去检查一次”
猜你喜欢
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
  • 2010-12-02
相关资源
最近更新 更多