Tăng tốc xà phòng magento v1


10

Tôi có nhiều câu hỏi cho các nhà phát triển magento có kinh nghiệm:

  1. Có thể cải thiện tốc độ của api xà phòng magento v1? Khi yêu cầu dữ liệu, nhanh chóng tốn 1,5 giây để magento biên dịch thông tin đơn giản như địa chỉ của khách hàng, v.v ...

    Để yêu cầu nhiều nút dữ liệu có liên quan có thể nhanh chóng tốn khoảng 5 - 7 giây.

    Bây giờ tôi đã thực hiện các yêu cầu đó thông qua các yêu cầu AJAX để giao diện trang tải nhanh, nhưng cải thiện tốc độ sẽ rất tốt.

  2. Hoặc sẽ tốt hơn nếu viết ứng dụng của riêng tôi để cung cấp cho tôi thông tin liên quan trực tiếp từ magento db? Nó không phức tạp như một db và nếu tôi thực hiện một truy vấn trực tiếp, nó sẽ tải trong vòng 100 giây với kết quả ...

    Sự cân nhắc duy nhất tôi có với tùy chọn đó là:

    1. Điều gì nếu magento cập nhật và thay đổi sơ đồ cơ sở dữ liệu của nó?
    2. Hoặc là thiết lập cơ sở dữ liệu của magento tương đối nâng cấp tương thích an toàn / xuống dưới?

Có ai có bất kỳ kinh nghiệm với điều này và câu chuyện thành công hoặc câu chuyện của họ? Tôi cần phải thực hiện một mô tả thông báo để có thể biết làm thế nào để tiến hành.


1
PHP có khả năng bị ràng buộc, không phải MySQL, Nginx hay bất cứ thứ gì khác . Giống như phần còn lại của cửa hàng của bạn. Làm cho cửa hàng của bạn nhanh chóng và API sẽ làm theo. Tuy nhiên, nó sẽ không bao giờ được làm sáng nhanh - các phương thức dataflow / API chậm bất kể, vì vậy việc triển khai tùy chỉnh sẽ luôn vượt trội với chi phí quản lý / thời gian thực hiện / khả năng nâng cấp.
Ben Lessani - Sonassi

3
không, không phải php bị ràng buộc ... đó là toàn bộ thiết lập của magento làm mọi thứ chậm lại một cách khó tin. Sẽ mất nhiều thời gian hơn để yêu cầu api xà phòng hoàn thành hơn là yêu cầu một trang xem kho lớn với nhiều mặt hàng và giỏ hàng. Một cái gì đó được xiên trong thiết kế magento.
Tschallacka

Câu trả lời:


8

Tôi đã gặp chính xác vấn đề này một cách rộng rãi và tôi đã giải quyết vấn đề này bằng cách chỉ làm việc trực tiếp với các đối tượng Magento. Tôi nghĩ rằng có mối quan tâm về thay đổi mã và những gì bạn mô tả, nhưng phần lớn mã của tôi nằm trong các tập lệnh sử dụng một lần để tải dữ liệu cũ, những thứ như vậy, vì vậy đó là một mối quan tâm nhỏ. Làm việc trực tiếp với các đối tượng Magento cũng có lợi ích phụ là khiến tôi học được những thứ bên trong nhiều hơn một chút so với API SOAP, chắc chắn là đường cong học tập dốc hơn, nhưng tôi cảm thấy hiểu biết hơn một chút về những gì đang diễn ra trong đó hơn là tôi đã bị mắc kẹt chỉ sử dụng API SOAP.

Một tùy chọn khác mà chúng tôi đã thử là lưu trữ dữ liệu bằng Memcached (Hoặc một cái gì đó giống như Redis cũng sẽ hoạt động), mặc dù bây giờ bạn phải lo lắng về việc thường xuyên cập nhật bộ đệm, từ đâu và những thứ tương tự. Nhưng, nó đạt được mục tiêu lấy dữ liệu nhanh hơn nhiều. Tôi nghĩ liệu đây có phải là một lựa chọn tốt hay không sẽ phụ thuộc vào chính xác những gì bạn đang cố gắng thực hiện.


Chà, nếu tôi tự làm một thứ gì đó từ magento, tôi sẽ không đạt được nhiều lợi ích về tốc độ vì magento vẫn phải "khởi động" để xử lý yêu cầu. Tôi thích api xà phòng vì nó "không thay đổi" nhưng tôi ghét thực tế là nó chậm đến mức không thể tin được khi trả lời những câu hỏi đơn giản nhất. ngay cả trang web chính phải xử lý nhiều yêu cầu hơn cũng nhanh hơn nhiều.
Tschallacka

Những gì tôi đang cố gắng làm là liên kết magento với phần mềm ERP của chúng tôi, vì vậy tôi cần truy cập vào dữ liệu gần đây nhất tại bất kỳ thời điểm nào.
Tschallacka

1
Có lẽ - trong trường hợp của tôi, tôi đã viết những thứ sẽ tải một đơn đặt hàng bằng cách tăng id, sau đó thực hiện một số hành động dựa trên dữ liệu của nó. Tải một đơn hàng đầy đủ là khoảng 1,5 giây trong API SOAP hoặc một phần rất nhỏ của giây ở dạng "đối tượng thô". Sự lựa chọn cho tôi là rõ ràng khi tôi sẽ tải hàng trăm trong số chúng trong một lần chạy. Một hạn chế khác là, bằng cách thực hiện kiểu "ứng dụng magento", nó phải ở trên cùng một máy chủ. Trong trường hợp của tôi, tôi không bận tâm điều đó, nhưng nó đáng để nhớ.
Mike

1
Làm thế nào bạn tải mọi thứ ở dạng đối tượng thô?
Tschallacka

$order = Mage::getModel('sales/order')->load($order_id);, về cơ bản. Có một hoặc hai đoạn trong chủ đề diễn đàn này có thể minh họa thêm: magentoc Commerce.com/boards/viewthread/18629
Mike

6

Tăng tốc api SOAP sẽ khó khăn. Bạn luôn có thể sử dụng một số phần cứng bổ sung (máy chủ MySQL nhanh hơn) hoặc chạy cửa hàng trên NginX, khi bạn đạt được một phần nghìn giây, NginX sẽ xử lý tốt hơn một lượng lớn yêu cầu http. Bộ nhớ đệm sẽ không thực sự giúp ích nhiều vì phản hồi của hầu hết các cuộc gọi sẽ khác nhau mỗi lần.

Xây dựng API của riêng bạn từ đầu bằng các mô hình Magento Core có thể là giải pháp nhanh nhất vì bạn có thể điều chỉnh mã để cải thiện hiệu suất bằng cách chỉ tải chính xác những gì bạn cần. Từ kinh nghiệm của tôi khi sử dụng các lớp cốt lõi, không có nhiều thay đổi giữa giả sử phiên bản 1.5 và 1.7

Chỉnh sửa: Tôi quên, Một chiến thắng nhanh nhỏ có thể đến từ việc bật nén đầu ra gzip trong tệp htaccess hoặc php.ini hoặc nếu bạn cảm thấy nó di chuyển api SOAP sang máy chủ khác bằng cùng một cơ sở dữ liệu nếu cơ sở dữ liệu MySQL không nút cổ chai


1
cơ sở dữ liệu mysql không phải là cổ chai, cổ chai là magento khởi động tất cả các tệp cấu hình của nó, tải từng mẩu tin tào lao, biên dịch một api xà phòng và cuối cùng nhớ rằng tôi đã yêu cầu, lấy dữ liệu đó, đánh giá nó, biên dịch nó thành định dạng được yêu cầu, xác nhận định dạng và sau đó xuất nó qua kết nối xà phòng .... Kiểm tra kiểm tra kiểm tra hai lần là tốt ... nhưng nó quá chậm. Nó sẽ làm tốt ngay từ đầu, nhưng sẽ cần tăng tốc vào một lúc nào đó.
Tschallacka

Bộ nhớ cache riêng của Magento sẽ giúp bạn ở đó với việc kết hợp các tệp cấu hình và bạn có thể sử dụng trình biên dịch để tăng tốc mã. Ngoài ra, một trình tăng tốc PHP ( en.wikipedia.org/wiki/PHP_accelerator ) sẽ tăng hiệu suất của bạn ở đây. Nhưng trong trường hợp của bạn, có thể đáng để xem xét việc xây dựng API của riêng bạn sử dụng api lõi Magento.
Sander Mangel
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.