Neden blok önbelleğe almak istemediğinizi anlamak önemlidir. Bunun oturuma özel bilgileri göstermesi gerekiyorsa, aramanız gerekenler
Tavsiye edilmeyen seçeneklerden biri, ajax çağrısı üzerinden bazı verileri döndüren özel denetleyici de olabilir (POST yöntemiyle önbelleğe alınmaması için).
(!) cacheable = "false" kullanılmamalıdır. İşte takip edecek, NEDEN:
Önbelleğe alınabilir = "false" olan bir blok tüm sayfayı önbelleğe almaz. Önbellek delme işlemi için kullanılmaz. Ayrıca aşağıdaki sayfa, bu (diyor etmek önbelleğe alınmaz bir sayfa oluşturmak , Cacheable kullanarak düzeninde uncacheable gibi o sayfada herhangi bloğunu işaretlemek = "false" ):
Bu, Varnish / Fastly modüllerinin her zaman önbelleğe alınamayan başlıkların bu nitelik değeri nedeniyle gönderileceğidir.
Cachable = "false" u etkinleştirdiğimizde ve Varnish / Fastly kullanırken tarayıcı başlığından sonraki tarayıcı tarafı gönderilir:
X-Magento-Cache-Debug:MISS
X-Magento-Cache-Control:max-age=0, must-revalidate, no-cache, no-store
Age: 0
Bunun için Magento'nun sayfa önbelleğe alma kodunda hata ayıklanabilir.
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGenerateXml
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGetOutput
Birincisi TTL'li genel Cache-Control göndermeli ve ikincisi Varnish / Fastly için X-Magento-Tags göndermeli.
Her ikisi de isCacheable () kontrolünü kullanarak bunun her zaman FALSE değerini döndürdüğü yeri kontrol edin (şu anki düzende herhangi bir öznitelik olup olmadığını kontrol edin: cacheable = "false"):
$cacheableXml = !(bool)count($this->getXml()->xpath('//' . Element::TYPE_BLOCK . '[@cacheable="false"]'));
Cacheable = "false" i kaldırdığımızda isCacheable (), TRUE olarak denetler ve start / / category- / productpages başlıklarını doğru bir şekilde alırız.
X-Magento-Cache-Control:max-age=86400, public, s-maxage=86400
X-Magento-Cache-Debug:HIT
X-Magento-Cache-Hits:1
Age:32