Mempercepat sabun magento v1

10

Saya punya beberapa pertanyaan untuk pengembang magento berpengalaman:

  1. Apakah mungkin untuk meningkatkan kecepatan api sabun magento v1? Ketika meminta data, biaya cepat 1,5 detik untuk Magento untuk mengkompilasi informasi sederhana seperti alamat pelanggan dll ...

    Untuk meminta beberapa kemungkinan data yang relevan, node dapat dengan cepat menghabiskan biaya sekitar 5-7 detik.

    Sekarang saya sudah melakukan permintaan tersebut melalui permintaan AJAX sehingga antarmuka halaman dimuat dengan cepat, tetapi peningkatan kecepatan akan lebih baik.

  2. Atau akan lebih baik untuk menulis aplikasi saya sendiri untuk memberi saya informasi yang relevan langsung dari magento db? Ini tidak rumit dari db dan jika saya melakukan kueri langsung memuat dalam 100 detik dengan hasil ...

    Satu-satunya pertimbangan yang saya miliki dengan opsi itu adalah:

    1. Bagaimana jika magento memperbarui dan mengubah skema basis datanya?
    2. Atau apakah pengaturan basis data magento relatif mudah di-upgrade / kompatibel ke bawah?

Apakah ada yang punya pengalaman dengan ini dan kisah sukses atau faillure mereka? Saya perlu membuat keputusan yang terinformasi untuk dapat mengetahui bagaimana melanjutkan.

Tschallacka
sumber
1
Kemungkinan PHP terikat, bukan MySQL, Nginx atau apa pun . Sama seperti sisa toko Anda. Buat toko Anda cepat dan API akan mengikuti. Namun, tidak akan pernah menjadi cepat - metode dataflow / API lambat, jadi implementasi kustom akan selalu mengungguli biaya pengelolaan / waktu implementasi / peningkatan.
Ben Lessani - Sonassi
3
nah, bukan php terikat ... seluruh pengaturan magento yang memperlambat segalanya dengan sangat baik. Diperlukan waktu lebih lama untuk menyelesaikan permintaan api sabun daripada meminta halaman tampilan toko besar dengan banyak item dan keranjang belanja. Sesuatu miring di desain magento.
Tschallacka

Jawaban:

8

Saya telah mengalami masalah ini secara luas, dan saya telah mengatasinya dengan hanya bekerja dengan objek Magento secara langsung. Saya pikir ada kekhawatiran tentang perubahan kode dan yang lainnya yang Anda jelaskan, tetapi sebagian besar kode saya ada dalam skrip sekali pakai untuk memuat data lama, hal-hal seperti itu, jadi itu hanya masalah kecil. Bekerja dengan objek Magento secara langsung juga memiliki manfaat samping membuat saya belajar internal sedikit lebih banyak daripada saya hanya dengan SOAP API, juga - kurva belajar lebih curam pasti, tapi saya merasa sedikit lebih tahu tentang apa yang terjadi di sana daripada jika saya hanya pernah menggunakan API SOAP.

Opsi lain yang kami coba adalah caching data menggunakan Memcached (Atau sesuatu seperti Redis akan bekerja juga), meskipun Anda sekarang harus khawatir tentang seberapa sering memperbarui cache, dari mana, dan hal-hal seperti itu. Tapi, itu memang mencapai tujuan mengambil data lebih banyak, lebih cepat. Saya pikir apakah ini pilihan yang baik atau tidak tergantung pada apa yang Anda coba lakukan.

Mike
sumber
Nah, jika saya membuat sesuatu dari Magento sendiri, saya tidak akan mendapatkan banyak manfaat kecepatan karena Magento masih harus "di-boot" untuk menangani permintaan. Saya suka api sabun karena "tidak berubah" tapi saya benci fakta bahwa lambat sekali untuk menanggapi pertanyaan yang paling sederhana. bahkan situs utama yang harus menangani lebih banyak permintaan jauh lebih cepat.
Tschallacka
Apa yang saya coba lakukan adalah menautkan magento ke perangkat lunak ERP kami, jadi saya perlu akses ke data terbaru pada waktu tertentu.
Tschallacka
1
Mungkin - dalam kasus saya, saya menulis hal-hal yang akan memuat pesanan dengan increment id, kemudian melakukan beberapa tindakan berdasarkan datanya. Memuat pesanan penuh adalah sekitar 1,5 detik dalam SOAP API, atau sebagian kecil dari yang kedua dalam bentuk "objek mentah". Pilihan bagi saya jelas ketika saya akan memuat ratusan dari mereka dalam satu kali. Batasan lain juga adalah dengan melakukannya dengan gaya "aplikasi magento" harus berada di server yang sama. Dalam kasus saya, saya tidak keberatan sama sekali, tetapi perlu diingat.
Mike
1
Bagaimana Anda memuat semuanya dalam bentuk objek mentah?
Tschallacka
$order = Mage::getModel('sales/order')->load($order_id);, pada dasarnya. Ada satu atau dua cuplikan di utas forum ini yang mungkin menggambarkan lebih banyak: magentocommerce.com/boards/viewthread/18629
Mike
6

Mempercepat api SOAP akan menjadi sulit. Anda selalu dapat memasukkan beberapa perangkat keras tambahan (server MySQL yang lebih cepat) atau menjalankan toko pada NginX yang akan membuat Anda beberapa milidetik, NginX lebih baik dalam menangani permintaan http dalam jumlah besar. Caching tidak akan banyak membantu karena respons sebagian besar panggilan akan berbeda setiap kali.

Membangun API Anda sendiri dari awal menggunakan model Magento Core mungkin merupakan solusi tercepat karena Anda dapat mengubah kode untuk meningkatkan kinerja dengan hanya memuat apa yang Anda butuhkan. Dari pengalaman saya menggunakan kelas inti tidak banyak yang berubah antara katakanlah versi 1.5 dan 1.7

Sunting: Saya lupa, Kemenangan cepat kecil bisa datang dari mengaktifkan kompresi gzip output di file htaccess atau php.ini atau jika Anda merasa sanggup memindahkan api SOAP ke server lain menggunakan database yang sama jika database MySQL tidak kemacetan

Sander Mangel
sumber
1
database mysql bukan leher botol, leher botol adalah magento boot semua file konfigurasi itu, memuat setiap bagian dari omong kosong, menyusun api sabun dan akhirnya ingat bahwa saya membuat permintaan, mengambil data, mengevaluasinya, mengkompilasi itu ke dalam format yang diminta, memvalidasi format dan kemudian mengeluarkannya melalui koneksi sabun .... Periksa periksa periksa periksa bagus ... tapi terlalu lambat. Ini akan baik-baik saja pada awalnya, tetapi perlu dipercepat pada suatu waktu.
Tschallacka
Cache asli Magento akan membantu Anda di sana dengan menggabungkan file konfigurasi, dan Anda dapat menggunakan kompiler untuk mempercepat kode. Juga akselerator PHP ( en.wikipedia.org/wiki/PHP_accelerator ) akan meningkatkan kinerja Anda di sini. Tetapi dalam kasus Anda mungkin layak untuk melihat membangun API Anda sendiri yang menggunakan api inti Magento.
Sander Mangel