Làm cách nào để tắt bộ nhớ cache cho phần hoặc khối cụ thể


31

Tôi đã phát triển chức năng giỏ hàng thanh hàng đầu cho cửa hàng hiển thị ba sản phẩm mới nhất được thêm vào giỏ hàng, điều này hoạt động rất tốt khi bộ đệm bị vô hiệu hóa nhưng khi tôi bật bộ đệm, nó hiển thị tổng phụ kỳ lạ trong giỏ hàng đầu và các sản phẩm lạ trong giỏ hàng.

Điều này làm tôi buồn: '(

Tôi biết điều này xảy ra vì bộ nhớ cache. Có bất cứ điều gì mà tôi chỉ có thể vô hiệu hóa bộ đệm cho phần này không? Tôi đã thử vô hiệu hóa bộ đệm ẩn html và kiểm tra xem nó có hoạt động tốt không nhưng tôi thấy danh mục phẳng đang gặp sự cố không xác định khi HTML bị chặn.


2
bạn đã giải quyết vấn đề chưa? Làm sao? Hãy chia sẻ chi tiết với chúng tôi. Cảm ơn!
Fabian Blechschmidt

Câu trả lời:


32

Bạn co thể thử

    <reference name="needed block">
        <action method="setCacheLifetime"><s>null</s></action>
    </reference>

hoặc là

    <reference name="needed block">
        <action method="setCacheLifetime" />
    </reference>

để đặt thành null.

Nhưng có lẽ tốt hơn là sử dụng ajax.

Có một bài viết nullhay về 0ý nghĩahttp://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workaround-usage-in-cache-block-policy/ (liên kết bị hỏng)


hmm sử dụng ajax có thể giải quyết vấn đề. Tôi sẽ thử cảm ơn vì sự giúp đỡ của bạn.
ravisoni

2
Tôi nghĩ null= không bao giờ cache và 0= cache vĩnh viễn?
đánh dấu

1
null= không bao giờ cache, phải. Tuy nhiên, tôi không chắc có thể tranh luận giá trị nullvới <action>chỉ thị.
Dmytro Zavalkin

2
<action method="setCacheLifetime"><s>null</s></action>đã làm cho tôi. TNX!
kẻ hủy hoại

6
Đặt trọn đời bộ đệm thành "0" không vô hiệu hóa bộ đệm. Chỉ "null" sẽ vô hiệu hóa nó!
Anna Völkl

9

Bạn có thể tắt bộ đệm trong getChildHtml (). Đây là chữ ký trông như thế nào:

public function getChildHtml($name = '', $useCache = true, $sorted = false)

Cái này cần phải dùng mẹo:

echo $this->getChildHtml('block', false);

tôi đã thử điều này .. thực sự đã được mã hóa trong top.phtml, điều này không hoạt động trong trường hợp đó
ravisoni

Điều đó cũng có thể được lưu vào bộ nhớ cache vì vậy tôi đoán nó sẽ không có nhiều tác dụng. Có một cơ hội bạn có thể kéo nó ra ngoài phần đó? Tôi không nghĩ có bất kỳ lựa chọn nào khác ...
Rick Kuipers

9

Trong tệp xml cụ thể. Nói danh mục

Trong đó đối với khối tham chiếu cụ thể Trong khối đó, đặt hành động giới hạn bộ đệm thành null

Ví dụ về danh mục

<reference name="right">
    <block type="catalog/navigation" name="catalog.product.cat.related" as="related_cat" template="catalog/navigation/list_cat.phtml" after="-" >
        <action method="unsetData"><key>cache_lifetime</key></action>
        <action method="unsetData"><key>cache_tags</key></action>
    </block>
</reference>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.