Tối ưu hóa tốc độ bằng cách vô hiệu hóa mô-đun Mage_Reports?


7

Khi suy nghĩ về việc tối ưu hóa tốc độ của Magento, có một số khả năng như bộ nhớ đệm (PHP, Cơ sở dữ liệu, thậm chí cả Bộ đệm toàn trang) để tăng tốc trang web của bạn.

Một khả năng khác là giảm số lượng xử lý được thực hiện, tức là giảm số lượng mô-đun đang chạy trong cửa hàng của bạn.

Gần đây, tôi đã tự hỏi liệu có thể / an toàn để hủy kích hoạt mô-đun Mage_Reports hay không.

Đây là trong tập tin app/etc/modules/Mage_All.xmlnhư

<Mage_Reports>
    <active>true</active>
    <codePool>core</codePool>
    <depends>
        <Mage_Customer/>
        <Mage_Catalog/>
        <Mage_Sales/>
        <Mage_Cms/>
    </depends>
</Mage_Reports>

Vì vậy, nó đi kèm với lõi và phụ thuộc vào một số mô-đun khác.

Tuy nhiên, tôi không thấy các mô-đun khác có Mage_Reports là một phụ thuộc.

Tôi đã tắt nó trong một cửa hàng thử nghiệm và mọi thứ dường như chạy tốt.

Câu hỏi => Có đúng không, ngoài việc mất dữ liệu báo cáo, tất nhiên, cửa hàng có thể chạy tốt mà không cần mô-đun này?

Hoặc có bất kỳ điểm nào mà cửa hàng của tôi sẽ phá vỡ khi mô-đun này không được kích hoạt?


2
các sản phẩm được xem gần đây có liên quan đến các báo cáo
FlorinelChis

Câu trả lời:


3

Cửa hàng của bạn có thể hoạt động, điều đó đúng, miễn là bạn có bảng điều khiển quản trị Đồ thị cũng bị vô hiệu hóa. Trong thực tế, tất cả tùy thuộc vào các lập trình viên và cách họ xử lý các tình huống với các mô-đun bị vô hiệu hóa. Vấn đề là, Magento 1.x không có cơ chế xử lý sẽ tự động giải quyết vấn đề đó cho bạn. Nếu bạn nhìn vào

public function getResourceModelInstance($modelClass='', $constructArguments=array())
{
    $factoryName = $this->_getResourceModelFactoryClassName($modelClass);
    if (!$factoryName) {
        return false;
    }
    return $this->getModelInstance($factoryName, $constructArguments);
}

nó sẽ trở lại falsekhi mô-đun bị vô hiệu hóa. Điều đó có nghĩa là tất cả Mage::getModel('reports/..sẽ là falsevà bất cứ phương thức nào bạn sẽ cố gắng gọi vào đối tượng (được cho là) ​​đó sẽ Call to a member function on a non-objectgây ra lỗi php Fatal cho bạn.

Mặc dù nhóm Magento đã hoàn thành công việc của họ (tốt, nhưng thực tế họ không làm vậy, nếu bạn bật Biểu đồ, quản trị viên của bạn sẽ phá vỡ trên Bảng điều khiển chẳng hạn), bạn không thể biết các tiện ích mở rộng của bên thứ 3 sẽ xử lý các tình huống đó như thế nào trong trường hợp họ cố gắng sử dụng Reportsmô-đun.

Vì vậy, nếu bạn chắc chắn rằng bạn đang xử lý tất cả các tình huống reportsđược gọi, thì bạn có thể vô hiệu hóa nó. Nếu không, tốt hơn là không.


4
Tiện ích mở rộng của bên thứ ba phải có khối <phụ thuộc> trong cấu hình mô-đun của họ, vì vậy mô-đun sẽ báo lỗi, nếu bạn không bật báo cáo. Điều này nên là - phải, tôi biết ... - thực hành tốt nhất
Fabian Blechschmidt

2

Tôi không thể cho bạn biết điều gì sẽ xảy ra nếu bạn tắt mô-đun nhưng tôi có thể cho bạn biết làm thế nào bạn có thể (có thể) dừng tác động xử lý của nó mà không vô hiệu hóa mô-đun.

Tất cả chi phí xử lý của nó đến từ các nhà quan sát. Và có lẽ là một công việc Xeon nhưng điều đó không liên quan ở đây. Nếu bạn có thể dừng việc quan sát các sự kiện, bạn có thể loại bỏ chi phí.

Cách ngây thơ sẽ là chỉnh sửa tệp config.xml và nhận xét chúng. Đừng làm vậy.

Cách đúng sẽ là tạo mô-đun của riêng bạn phụ thuộc vào Mage_Reports và chỉ cần có một tệp cấu hình. Trong đó xác định thẻ giao diện người dùng và sao chép trong tất cả các quan sát viên từ Mage_Reports. Sau đó thay đổi sự kiện họ đang quan sát thành một sự kiện vô nghĩa không thực sự sẽ không bao giờ bị sa thải. Sau đó thêm một thẻ dưới loại quan sát có tên với giá trị bị vô hiệu hóa.

Nếu bạn nhìn vào sự kiện công văn trong App.php, bạn sẽ có thể thấy nó hoạt động. Bạn ghi đè lên chúng bằng một người quan sát bị vô hiệu hóa. Không có gì được gọi và không có gì phá vỡ!


Có vẻ là một ý tưởng tốt!
mpaepper
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.