Notei uma grande quantidade de relatórios de que essa tabela em si pode ficar extremamente confusa. Estou executando um site com ~ 5000 SKUs e ~ 250 categorias (loja única) e uma core_url_rewrite
tabela resultante com mais de 600.000 linhas e mais de 500 MB de tamanho, é uma loucura.
Isso pode diminuir o desempenho do site e resultar em um banco de dados muito volumoso. Eu fiz algumas pesquisas e encontrei algumas postagens sobre isso, principalmente:
Bug Core_url_rewrite: quantidade maciça de URLs duplicados para cada produto gerado no índiceMagento Commerce - Rastreamento de bugs - Edição # 29020
// Esses links foram removidos desde a implementação dos novos painéis
Agora entendo que a tabela pode ser truncada e reindexada, mas isso não resolve o problema, apenas prolonga o problema.
Pelo que entendi, parte do problema são produtos que possuem a mesma chave de URL com base no nome do produto, resultando em links indexados.
Uma correção mencionada é:
app/code/core/Mage/Catalog/Model/Url.php
na linha ~ 807:
Mudança:
if ($product->getUrlKey() == '' && !empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Para:
if (!empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Mas mesmo isso não resolve completamente o problema.
Minha pergunta é a seguinte:
Se você enfrentou esse problema, conseguiu configurar um algoritmo eficaz, lógico e eficiente que não envolva "gerenciar" o problema repetidamente, mas realmente resolver o problema de uma vez por todas?
Será que realmente aprecio algumas dicas sobre isso.
BTW: Faça um favor a si mesmo e verifique como está a sua mesa agora. Você pode estar enfrentando esse problema e o impacto no desempenho como resultado disso, mesmo sem saber - eu não.
Edit: Eu entrei em contato com www.Nexcess.net (um parceiro de hospedagem de platina Magento) e eles confirmaram que tiveram clientes solicitando que sua core_url_rewrite
tabela exija truncamento por ser muito volumosa.
Uma grande preocupação minha é o impacto no SEO que isso pode ter, e é por isso que eu gostaria de uma solução em vez de adiar o problema de surgir novamente.
Atualização: a Nexcess mencionou que, com os produtos duplicados na tabela, pode estar prejudicando o SEO.
fonte
Respostas:
Consegui estabilizar o problema da seguinte maneira:
Etapa 1: reescreva o modelo de URL do catálogo (usando seu próprio módulo: como fazer )
Conforme a solução de Jahnni em
os painéis MagentoCommerce(não está mais ativo com a nova diretoria),app/code/core/Mage/Catalog/Model/Url.php
[em torno da linha 807Mage_Catalog_Model_Url::getProductRequestPath()
]De:
Para:
Etapa 2: Truncar
Truncar a
core_url_rewrite
tabelaEtapa 3: reindexar e liberar caches
Inicie o processo de reindexação nas regravações de URL principal. Depois disso, você desejará liberar o cache do Magento e o cache de armazenamento.
System
→Cache Management
→Flush Magento Cache
System
→Cache Management
→Flush Cache Storage
Voila, você está pronto. Você notará que, se executar novamente o indexador, a tabela deverá permanecer constante em tamanho (a menos que você tenha adicionado mais produtos entre eles ou se você tiver nomes de categorias duplicados).
fonte
core_url_rewrite
tabela agora e anote o número de registros. Execute a etapa 3 novamente (a reindexação) e atualize sua exibição nacore_url_rewrite
tabela. Se o número for o mesmo, você resolveu com sucesso. Em seguida, vá em frente e mescle manualmente suas regravações personalizadas. Muito bem sucedida.Embora eu espero que alguém aqui tenha uma resposta, não sei se você encontrará uma. Esta tabela fica volumosa por vários motivos diferentes. Os erros nas versões anteriores (e possivelmente atuais) do Magento são um. Outra é a lógica nesta tabela que tenta rastrear alterações no valor da chave da URL para que as reescritas 301/302 sejam configuradas para produtos antigos. Por esse motivo, e para complicar as coisas, truncar a tabela e gerar novamente pode fazer com que as reescrições de URL existentes desapareçam, e isso terá um efeito desconhecido na listagem do seu mecanismo de pesquisa (não é necessariamente ruim, apenas difícil de prever).
Meu conselho geral aos clientes que perguntam é
Deixe a mesa de crescimento gigante como está, se você não souber lidar bem com sua situação de URL / SEO
Até o tamanho da tabela começar a ser um problema (gerar mapas do site, por exemplo). Quando isso acontecer, identifique sua situação de URL / SEO.
Depois de controlar sua situação de URL / SEO, faça backup da tabela, trunque a tabela e gere novamente. Resolva quaisquer problemas de URL / SEO causados pelo truncamento.
Automatize a etapa 3
Tentar consertar isso no nível do código Magento é admirável, mas você estará nadando contra a corrente. Às vezes é melhor aceitar que "Isso é apenas Magento sendo Magento" e resolver o problema com um processo externo.
fonte
Gostaria de adicionar uma correção para esse bug do indexador de reescrita de URL, que foi desenvolvido na bugathon em março de 2013 e que foi melhorado posteriormente. Deve resolver esse problema. Como referência, aqui está o arquivo de correção do link:
Além disso, gostaria de adicionar o patch EE
PATCH_SUPEE-389_EE_1.12.0.2_v2.sh
, que agora está disponível no GitHub :Se você deseja usar este patch com o CE, teste-o corretamente, pois foi desenvolvido para o EE.
fonte
Depois de aplicar o patch postado por Simon, você pode usar a seguinte consulta para remover dados indesejados:
Em contraste com a consulta de Ashish Hira, isso afeta apenas URLs que têm um número inteiro quando a última parte - esse foi - no meu caso - o motivo da confusão.
Ele tenta não tocar em reescrições válidas, que por exemplo podem ter sido criadas ao atualizar uma chave de URL.
fonte
Eu implementei a resposta aceita com sucesso. Em outra instalação do Magento, eu precisava preservar algumas reescritas personalizadas, então excluí todas as entradas que terminam em - e, em seguida, um número de até 5 dígitos com:
Isso funcionou principalmente, mas ainda tenho mais 2 linhas em cada re-índice. Não sei por que. Eu pensei em compartilhar essa experiência.
fonte
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', array('regexp' => '[0-9]$'));
A principal mudança que você mencionou parece ser necessária apenas se você tiver produtos sem url_keys, no entanto, o Magento sempre deve criar url_keys para você. Se você tiver algum importador que esteja criando produtos sem url_keys, esse problema surgirá para esses produtos. Tente executar a seguinte consulta para encontrar esses produtos:
Se algum produto retornar dessa consulta, ele não possui uma url_key e será um problema.
fonte
entity_type_id
de produtos é de 4 e não 10.Segui a solução aprovada para impedir a reescrita de URL duplicada e depois exportada
core_url_rewrite
como arquivo CSV. Conseguiu abrir este CSV e excluir todas as regravações de URL, exceto as criadas manualmente.Depois truncei a
core_url_rewrite
tabela e importei meu CSV salvo com reescrições de URL criadas manualmente.Depois de todas as alterações, passou de 940 mil linhas para 32 mil. Enorme melhoria.
fonte
Aqui está o patch (reescrita local) para a Comunidade Magento, para corrigir que https://github.com/biotech/Magento-URL-Rewrite Na verdade, faz o mesmo que o patch EE PATCH_SUPEE-389_EE_1.12.0.2_v2.sh - verifique todas as reescritas e evite a criação de registros duplicados. Funciona bem nos últimos 2 meses na produção CE 1.9, 15k produtos, 4 lojas, re-indexação completa todas as noites após as alterações na importação de produtos a granel.
fonte
Como isso ainda não foi mencionado neste tópico, eu gostaria de compartilhar as novidades interessantes de que esse problema foi corrigido no Magento 1.9.3.9 e posterior. Veja as notas de versão relacionadas :
Portanto, todas as correções para esse problema mencionado aqui não são necessárias ao usar uma versão do Magento maior ou igual a 1.9.3.9. Eu ainda sugiro excluir os valores antigos, conforme descrito na resposta de Alex .
fonte
Execute esta consulta
Isso certamente ajudará a reduzir o tamanho da
core_url_size
tabela, excluindo dados indesejados.fonte
Livrar-se de
.html
.html
Definido em .htaccess
Apague todos os
.html
redirecionamentos:fonte
A resposta oficial deve ser a instalação do SUPEE-389. Simples assim.
Funciona perfeitamente com o Magento CE, pois eles compartilham o mesmo trecho de código nessa área.
Você pode encontrar o arquivo de correção aqui, https://gist.github.com/piotrekkaminski/c348538ca91ba35773be#file-patch_supee-389_ee_1-12-0-2_v2-sh
Tivemos esse problema e ele gerou milhares de novas linhas após cada re-indexação do URL do catálogo. Agora o problema se foi ... exceto pelo fato de que precisamos limpar o banco de dados.
O script fornecido aqui parece um bom começo, mas não é uma solução perfeita,
Consulte https://www.atwix.com/magento/duplicated-product-url-keys-in-community-edition/
fonte
Há também um módulo dedicado https://github.com/vladsmirnov/url-rewrites , para que você não precise reaplicar o patch após cada atualização do Magento. O módulo contém duas partes: módulo real, para impedir a duplicação a partir de agora e o script do shell para limpar o banco de dados existente.
fonte