Tenho várias perguntas para desenvolvedores experientes em magento:
É possível melhorar a velocidade da API do sabão magento v1? Ao solicitar dados, custa rapidamente 1,5 segundos para o magento compilar informações simples, como endereço do cliente, etc.
Solicitar vários nós de dados relevantes possíveis pode custar rapidamente cerca de 5 a 7 segundos.
Agora, já estou fazendo essas solicitações por meio de solicitações AJAX, para que a interface da página seja carregada rapidamente, mas uma melhoria de velocidade seria boa.
Ou seria melhor escrever meu próprio aplicativo para fornecer as informações relevantes diretamente do magento db? Não é tão complicado de um db e se eu fizer uma consulta direta, ele carrega dentro de um centésimo de segundo com os resultados ...
A única consideração que tenho com essa opção é:
- E se o magento atualizar e alterar seu esquema de banco de dados?
- Ou a configuração do banco de dados do magento é relativamente segura / compatível com versões anteriores?
Alguém tem alguma experiência com isso e com suas histórias de sucesso ou fracasso? Preciso tomar uma decisão informada para saber como proceder.
fonte
Respostas:
Eu encontrei esse problema exatamente extensivamente e resolvi isso trabalhando apenas com objetos Magento diretamente. Eu acho que há a preocupação de alterações de código e outras coisas que você descreve, mas grande parte do meu código está em scripts de uso único para carregar dados antigos, coisas assim, então foi uma preocupação menor. Trabalhar diretamente com os objetos Magento também teve o benefício de me fazer aprender os internos um pouco mais do que eu faria com a API SOAP também - curva de aprendizado mais íngreme, com certeza, mas me sinto um pouco mais informado sobre o que está acontecendo lá do que se eu tivesse preso apenas usando a API SOAP.
Outra opção que tentamos foi armazenar em cache os dados usando o Memcached (ou algo como o Redis também funcionaria), embora agora você precise se preocupar com a frequência com que atualizar o cache, de onde e coisas assim. Mas, ele atinge o objetivo de recuperar dados muito, muito mais rapidamente. Acho que se essa é uma boa opção dependerá exatamente do que você está tentando fazer.
fonte
$order = Mage::getModel('sales/order')->load($order_id);
, bascicamente. Há um trecho ou dois neste tópico do fórum que podem ilustrar mais: magentocommerce.com/boards/viewthread/18629Acelerar a API SOAP será difícil. Você sempre pode instalar algum hardware extra (servidor MySQL mais rápido) ou executar a loja no NginX, o que, quando você faz alguns milissegundos, o NginX é melhor para lidar com grandes quantidades de solicitações HTTP. O cache não ajudaria muito, pois a resposta da maioria das chamadas será diferente a cada vez.
Construir sua própria API do zero usando os modelos Magento Core pode ser a solução mais rápida, pois você pode ajustar o código para melhorar o desempenho, carregando apenas exatamente o que você precisa. Da minha experiência usando as classes principais, não mudou muito entre as versões 1.5 e 1.7, digamos
Edit: Eu esqueci, uma pequena vitória rápida pode vir da ativação da compactação de saída gzip no arquivo htaccess ou php.ini ou se você quiser mover a API SOAP para outro servidor usando o mesmo banco de dados se o banco de dados MySQL não estiver o gargalo
fonte