Saya telah memperhatikan sejumlah besar laporan bahwa tabel ini sendiri dapat menjadi sangat berantakan, saya menjalankan situs dengan ~ 5000 SKU dan ~ 250 kategori (satu toko) dan core_url_rewrite
tabel yang dihasilkan lebih dari 600.000 baris dan lebih dari 500MB besar yang gila.
Ini dapat memperlambat kinerja situs dan menghasilkan basis data yang sangat besar. Saya telah melakukan beberapa penggalian dan menemukan beberapa posting mengenai hal ini, terutama:
Bug Core_url_rewrite: Jumlah besar duplikat url untuk setiap produk yang dihasilkan pada indeksMagento Commerce - Pelacakan Bug - Masalah # 29020
// Tautan ini telah dihapus sejak penerapan dewan baru
Sekarang saya mengerti bahwa tabel dapat dipotong dan diindeks ulang, tetapi ini tidak menyelesaikan masalah, itu hanya memperpanjang masalah terjadi lagi.
Dari apa yang saya mengerti, bagian dari masalah adalah produk yang memiliki kunci url yang sama berdasarkan nama produk, sehingga menghasilkan tautan yang diindeks.
Perbaikan yang disebutkan adalah:
app/code/core/Mage/Catalog/Model/Url.php
on line ~ 807:
Perubahan:
if ($product->getUrlKey() == '' && !empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Untuk:
if (!empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Tetapi bahkan ini tidak sepenuhnya menyelesaikan masalah.
Pertanyaan saya adalah sebagai berikut:
Jika Anda pernah mengalami masalah ini, sudahkah Anda mengatur algoritme yang efektif, logis & efisien yang tidak melibatkan "pengelolaan" masalah berulang kali, tetapi sebenarnya menyelesaikan masalah ini untuk selamanya?
Akan sangat menghargai beberapa wawasan tentang ini.
BTW: Tolong bantulah dirimu sendiri dan periksa seperti apa meja Anda sekarang, Anda mungkin mengalami masalah ini dan dampak kinerja sebagai akibatnya tanpa menyadarinya - saya tidak.
Sunting: Saya telah melakukan kontak dengan www.Nexcess.net (mitra hosting Magento platinum) dan mereka telah mengkonfirmasi bahwa mereka telah meminta klien meminta core_url_rewrite
meja mereka karena pemotongan karena terlalu besar.
Kekhawatiran besar saya adalah dampak SEO yang mungkin terjadi, itulah sebabnya saya ingin solusi daripada menunda-nunda masalah agar tidak muncul lagi.
Pembaruan: Nexcess menyebutkan bahwa dengan produk duplikat di dalam tabel itu sebenarnya dapat merugikan SEO apa adanya.
sumber
Jawaban:
Saya telah berhasil menstabilkan masalah ini sebagai berikut:
Langkah 1: Tulis ulang model URL Katalog (Menggunakan modul Anda sendiri: Cara )
Sesuai solusi Jahnni pada
papan MagentoCommerce(tidak lagi aktif dengan papan baru),app/code/core/Mage/Catalog/Model/Url.php
[sekitar baris 807Mage_Catalog_Model_Url::getProductRequestPath()
]Dari:
Untuk:
Langkah 2: Potong
Pangkas
core_url_rewrite
mejaLangkah 3: Reindex & Flush Caches
Mulai proses pengindeksan ulang pada Core URL Rewrites. Setelah itu, Anda ingin membersihkan cache Magento & cache penyimpanan.
System
→Cache Management
→Flush Magento Cache
System
→Cache Management
→Flush Cache Storage
Voila, kamu sudah siap. Anda akan melihat jika Anda menjalankan kembali pengindeks, ukuran tabel harus tetap konstan (kecuali jika Anda telah menambahkan lebih banyak produk di antara atau jika Anda memiliki nama kategori rangkap).
sumber
core_url_rewrite
tabel sekarang dan catat jumlah catatan. Jalankan langkah 3 lagi (pengindeksan ulang), dan segarkan tampilan Anda di atascore_url_rewrite
meja. Jika angkanya sama, Anda telah berhasil menyelesaikannya. Kemudian lanjutkan dan secara manual gabungkan penulisan ulang kustom Anda. Semua yang terbaik.Sementara saya berharap seseorang di sini memberikan jawaban, saya tidak tahu bahwa Anda akan menemukannya. Tabel ini menjadi besar karena banyak alasan berbeda. Bug di versi Magento sebelumnya (dan mungkin saat ini) adalah satu. Lain adalah ada logika dalam tabel ini yang mencoba melacak perubahan ke nilai kunci URL sehingga 301/302 penulisan ulang diatur untuk produk lama. Karena hal ini, dan hal-hal rumit, memotong tabel dan regenerasi dapat membuat penulisan ulang URL yang ada hilang, dan ini akan memiliki efek yang tidak diketahui pada daftar mesin pencari Anda (tidak perlu buruk, hanya sulit untuk diprediksi).
Nasihat umum saya untuk klien yang bertanya adalah
Tinggalkan tabel pertumbuhan raksasa seolah-olah Anda tidak memiliki pegangan yang baik pada situasi URL / SEO Anda
Hingga ukuran tabel mulai menjadi masalah (menghasilkan peta situs, misalnya). Ketika itu terjadi, dapatkan penanganan pada situasi URL / SEO Anda.
Setelah Anda memiliki pegangan pada situasi URL / SEO Anda, buat cadangan tabel, lalu potong tabel dan buat ulang. Alamat setiap URL / masalah SEO yang disebabkan oleh pemotongan.
Otomatiskan langkah 3
Mencoba untuk memperbaikinya pada tingkat kode Magento sangat mengagumkan, tetapi Anda akan berenang di hulu. Terkadang lebih baik untuk menerima bahwa "Itu hanya Magento menjadi Magento", dan untuk menyelesaikan masalah dengan proses eksternal.
sumber
Saya ingin menambahkan perbaikan untuk bug pengindeks url penulisan ulang ini yang telah dikembangkan di bugathon pada Maret 2013 dan yang telah diperbaiki setelahnya. Seharusnya mengatasi masalah ini. Sebagai referensi, berikut adalah file tambalan dari tautan:
Selain itu, saya ingin menambahkan patch EE
PATCH_SUPEE-389_EE_1.12.0.2_v2.sh
, yang sekarang tersedia di GitHub :Jika Anda ingin menggunakan tambalan ini dengan CE, pastikan untuk mengujinya dengan benar, karena telah dikembangkan untuk EE.
sumber
Setelah menerapkan tambalan yang diposting oleh Simon, Anda dapat menggunakan kueri berikut untuk menghapus data sampah:
Berbeda dengan permintaan Ashish Hira, ini hanya efek URL yang memiliki nomor integer karena ada bagian terakhir - ini adalah - dalam kasus saya - alasan kekacauan.
Mencoba untuk tidak menyentuh penulisan ulang yang valid, yang misalnya mungkin telah dibuat ketika memperbarui kunci URL.
sumber
Saya telah menerapkan jawaban yang diterima dengan sukses. Pada pemasangan Magento yang lain, saya harus menyimpan beberapa penulisan ulang kustom sehingga saya menghapus semua entri yang diakhiri dengan - dan kemudian nomor hingga 5 digit dengan:
Ini sebagian besar bekerja tetapi saya masih mendapatkan 2 baris lagi pada setiap indeks ulang. Tidak yakin kenapa. Saya pikir saya akan membagikan pengalaman ini.
sumber
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', array('regexp' => '[0-9]$'));
Perubahan inti yang Anda sebutkan tampaknya hanya diperlukan jika Anda memiliki produk tanpa url_keys, namun Magento harus selalu membuat url_keys untuk Anda. Jika Anda memiliki beberapa importir yang membuat produk tanpa url_keys, maka masalah ini akan muncul untuk produk-produk tersebut. Coba jalankan permintaan berikut untuk menemukan produk-produk tersebut:
Jika ada produk yang kembali dari permintaan itu, mereka tidak memiliki url_key dan akan menjadi masalah.
sumber
entity_type_id
untuk produk adalah 4 dan bukan 10.Saya mengikuti solusi yang disetujui untuk mencegah duplikasi penulisan ulang URL, lalu diekspor
core_url_rewrite
sebagai file CSV. Dapat membuka CSV ini dan menghapus semua kecuali penulisan ulang URL yang dibuat secara manual.Lalu saya memotong
core_url_rewrite
tabel, dan mengimpor CSV saya yang disimpan dengan penulisan ulang URL yang dibuat secara manual.Setelah semua perubahan, beralih dari baris 940K ke 32K. Perbaikan besar.
sumber
Berikut ini adalah tambalan (penulisan ulang lokal) untuk Komunitas Magento untuk memperbaikinya https://github.com/biotech/Magento-URL-Rewrite Faktanya melakukan hal yang sama dengan patch EE PATCH_SUPEE-389_EE_1.12.0.2_v2.sh - periksa setiap penulisan ulang dan hindari pembuatan rekaman duplikat. Bekerja dengan baik 2 bulan terakhir pada produksi CE 1.9, produk 15k, 4 toko, indeks ulang penuh setiap malam setelah perubahan impor produk massal.
sumber
Karena ini belum disebutkan di utas ini, saya ingin berbagi berita keren bahwa masalah ini diperbaiki di Magento 1.9.3.9 dan yang lebih baru. Lihat catatan rilis terkait :
Jadi semua perbaikan untuk masalah ini yang disebutkan di sini tidak diperlukan saat menggunakan versi Magento yang lebih besar atau sama dengan 1.9.3.9. Saya masih menyarankan menghapus nilai-nilai lama seperti yang dijelaskan dalam jawaban Alex .
sumber
Jalankan kueri ini
Ini pasti akan membantu Anda mengurangi ukuran
core_url_size
tabel dengan menghapus data sampah.sumber
Singkirkan itu
.html
.html
Diatur dalam .htaccess
Hapus semua arahan
.html
ulang:sumber
Jawaban resmi adalah menginstal SUPEE-389. Sederhana seperti itu.
Ini bekerja dengan baik dengan Magento CE karena mereka berbagi bagian kode yang sama di area ini.
Anda dapat menemukan file tambalan di sini, https://gist.github.com/piotrekkaminski/c348538ca91ba35773be#file-patch_supee-389_ee_1-12-0-2_v2-sh
Kami mengalami masalah ini dan menghasilkan ribuan baris baru setelah setiap URL Katalog diindeks ulang. Sekarang masalahnya hilang ... kecuali fakta bahwa kita harus membersihkan DB.
Skrip yang disediakan di sini sepertinya awal yang baik tetapi itu bukan solusi yang sempurna,
Lihat https://www.atwix.com/magento/duplicated-product-url-keys-in-community-edition/
sumber
Ada juga modul khusus https://github.com/vladsmirnov/url-rewrites , jadi Anda tidak perlu mendaftar kembali tambalan setelah setiap pembaruan Magento. Modul berisi dua bagian: modul aktual, untuk mencegah duplikasi mulai sekarang dan skrip shell untuk membersihkan database yang ada.
sumber