Jenis Blok Tidak Valid

9

Saya mendapatkan pesan galat berikut beberapa kali sehari, dan pengetahuan saya tentang cara kerja Magento CE 1.9.0.1 cukup tipis sehingga saya tidak tahu apakah ini normal, perilaku penasihat dari Magento, atau apakah ia memberi tahu saya, saya punya masalah buruk.

Ini pesannya:

Satu atau lebih dari Tipe Cache tidak valid: Blok output HTML. Klik di sini untuk pergi ke Manajemen Cache dan menyegarkan jenis cache.

Menyegarkan cache tertentu membuat masalah hilang selama beberapa jam atau lebih.

Saat ini saya tidak mengedit tata letak, produk, dll., Tidak ada sama sekali.

Apa yang salah dan bagaimana saya bisa memperbaikinya?

Dave G
sumber
Saya mendapatkan ini setiap hari ketika saya bangun dan masuk di Magento v1.9.2.2 - Satu atau lebih dari Jenis Cache tidak valid: Blok keluaran HTML. Klik di sini untuk pergi ke Manajemen Cache dan menyegarkan jenis cache. Saya tidak pernah menggunakan ini pada versi sebelumnya kecuali saya benar-benar melakukan sesuatu. Apakah ini semacam bug?
Neal Hart

Jawaban:

6

Pertama, penting untuk dipahami bahwa ini bukan kesalahan, itu hanya pemberitahuan.

Mungkin ada banyak alasan cache blok tidak valid dari pembaruan produk, perubahan aturan harga katalog, dan ekstensi pihak ke-3. Menjalankan cronjobs juga dapat menyebabkan cache blok menjadi tidak valid juga.

Ada beberapa ekstensi komunitas yang tersedia (tercantum di bawah) yang akan menyegarkan blokir Anda karena menjadi tidak valid.

https://github.com/tomasinchoo/Inchoo_InvalidatedBlockCacheFix

https://github.com/mklooss/Loewenstark_InvalidCache

Eirik
sumber
2

Ini adalah kesalahan.

Ada masalah pekerjaan CRON (posting 1.9.?) Yang menjalankan dan membatalkan Cache HTML, yang menghasilkan masalah (misalnya dalam kasus saya, gagal membawa diskon harga ke Keranjang - sehingga pelanggan akan dikenakan jumlah yang salah).

Kita tidak perlu menjalankan ekstensi untuk memperbaiki masalah yang telah diperkenalkan!

Brian Milnes
sumber
Saya mendapatkan perilaku yang sama persis pada CE 1.9.2.2, setiap pagi output HTML Blok perlu di-refresh, dan memikirkan masalah pekerjaan cron. @ Brian dapatkah Anda memberikan rincian lebih lanjut tentang tugas cron itu?
Marc
Saya pikir Anda berpikir mundur: Bukan karena "harga tidak terbawa ke keranjang," melainkan bahwa harga pada halaman ditambahkan ke cache sebelum refresh berjalan, dan karena itu cache salah , sedangkan harga yang benar ditampilkan di troli. Bagi pembeli, mereka mungkin berpikir bahwa harga yang lebih rendah adalah harga yang "benar".
Eric Seastrand
@ Brian, Bisakah Anda memberikan detail lebih lanjut tentang tugas cron yang membatalkan blok Anda?
Haim
0

Ini adalah operasi Magento standar dari 1.6.xx dan maju. Sesuatu selalu menyebabkan pembatalan cache blok html acak.

Saya baru saja mengatur seorang pengamat yang melakukan pekerjaan cron periodik, mengatur interval apa pun yang tampaknya sesuai.

Observer.php

<?php

/************************
 * Find invalidated cache types and refresh
 *
 * Set Cron Time for refresh in config.xml
 *
 */

class Fiasco_Rcache_Model_Observer {

    public function refreshCache() {

        try {

            $types = Mage::app()->getCacheInstance()->getInvalidatedTypes();

            foreach($types as $type) {

                Mage::app()->getCacheInstance()->cleanType($type->getId());

            }

            Mage::log('Invalid Cache Types Refreshed');

        } catch (Exception $e) {

            Mage::logException($e);

        }
    }
}

config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Fiasco_Rcache>
            <version>0.5.0</version>
        </Fiasco_Rcache>
    </modules>
    <global>
        <models>
            <refresh_cache>
                <class>Fiasco_Rcache_Model</class>
            </refresh_cache>
        </models>
    </global>
    <crontab>
        <jobs>
            <refresh_cache>
                <!-- Min Hour Day Month DoW -->
                <schedule><cron_expr>0 */3 * * *</cron_expr></schedule>
                <run><model>refresh_cache/observer::refreshCache</model></run>
            </refresh_cache>
        </jobs>
    </crontab>
</config>
Laboratorium Fiasco
sumber
0

Indikator cache yang tidak valid ini mungkin terkait dengan cron dailyCatalogUpdate. Bertanggung jawab untuk menerapkan / menyegarkan peraturan katalog.

Sekali sehari, ia memanggil Mage::getSingleton('catalogrule/rule')->applyAll();.

Di dalam kode metode ini, ada panggilan untuk $this->_invalidateCache(), yang pada gilirannya panggilan $this->_app->getCacheInstance()->invalidateType()pada block_htmltembolok.

Masalahnya adalah bahwa cache tidak valid tanpa melakukan pemeriksaan untuk menentukan apakah itu mungkin masih valid. Bagi saya, ini lebih baik daripada tidak membatalkan cache, karena dengan begitu Anda setidaknya bisa tahu bahwa itu bisa tidak valid, dan menggunakan sesuatu seperti apa yang disarankan Fiasco Labs untuk menyiram data cache berpotensi (tidak valid).

Itu kemudian menjadi keputusan apakah Anda ingin membuat kesalahan di sisi:

A) Menunjukkan kepada pelanggan harga yang salah, tetapi menjaga cache, dan dengan demikian memiliki lebih sedikit beban server

atau

B) Menampilkan harga yang benar, tetapi memiliki lebih banyak cache yang hilang, dan karenanya memuat server lebih tinggi.

Ada dua hal yang sulit dalam ilmu komputer: penamaan hal-hal dan pembatalan cache .

Eric Seastrand
sumber
0

lihat di sini solusinya: https://magento.stackexchange.com/a/72687

Pada dasarnya ubah fungsi dailyCatalogUpdate dari app / code / local / Mage / CatalogRule / Model / Observer.php ke

        $collection = Mage::getResourceModel('catalogrule/rule_collection')
        ->addFieldToFilter('is_active', array('neq' => 0));
    if ($collection->getSize() == 0) {
        return $this;
    }
    parent::dailyCatalogUpdate($observer);
    $types = Mage::getConfig()->getNode('global/catalogrule/related_cache_types')->asArray();
    foreach (array_keys($types) as $type) {
        Mage::app()->getCacheInstance()->cleanType($type);
    }
    return $this;
MeHigh
sumber