2010-09-20 33 views
6

Tôi có một bộ sưu tập cần thời gian đáng kể để tải. Những gì tôi muốn là để cache nó (APC, Memcache). Không thể cache toàn bộ đối tượng (vì nó không thể được unserialized và nó là hơn 1 MB). Tôi nghĩ rằng bộ nhớ đệm dữ liệu thu thập ($ col-> getData()) là con đường để đi, nhưng tôi không tìm thấy cách nào để xây dựng lại đối tượng dựa trên mảng này. Bất kì manh mối nào?Làm thế nào để bộ nhớ cache một bộ sưu tập trong Magento?

Trả lời

1

Tôi thực sự không biết, nhưng tôi đã tìm kiếm tất cả các tệp có từ "cache" trong đó có tên tệp là "Collection.php" và có một vài kết quả. Ví dụ đầy hứa hẹn nhất để xem xét có thể là phương pháp Mage_Sales_Model_Entity_Quote_Item_Collection (_getProductCollection()). Có vẻ như Varien_Data_Collection (là lớp cha mẹ của bất kỳ bộ sưu tập Magento nào) có một vài phương pháp liên quan đến bộ nhớ cache: initCache() and _getCacheInstance().

Không thể nói trước đây nhưng có thể hữu ích.

Chúc may mắn.

4

Bộ sưu tập đã có một số bộ nhớ đệm được xây dựng trong nhưng họ cần một chút khiến nên đặt này trong constructor của một bộ sưu tập:

$cache = Mage::app()->getCacheInstance(); 
$prefix = "SomeUniqueValue"; 
$this->initCache($cache, $prefix, array(Mage_Catalog_Model_Product::CACHE_TAG)); 

Chọn thẻ phù hợp với nội dung của bộ sưu tập để nó sẽ được rửa tự động . Bằng cách này, xây dựng một ID dựa trên truy vấn đang được thực hiện, nó hữu ích nhất khi bộ sưu tập được lọc, sắp xếp hoặc phân trang - nó tránh xung đột phiên bản.

Nói chung điều này hầu như không được sử dụng bởi vì khi bạn truy xuất dữ liệu, bạn hầu như luôn hiển thị nó, có thể dưới dạng HTML, do đó có ý nghĩa để lưu vào bộ nhớ cache thay thế. Chặn bộ nhớ đệm được sử dụng rộng rãi và được tài liệu tốt hơn.

+0

Cách tôi có thể lưu bộ nhớ đệm thay vì từ khối Objetc ??? – davidselo

+0

Tôi không hiểu câu hỏi. – clockworkgeek

+0

Nếu tôi có thể thực hiện trought một Block với Mage :: getModel ('example/example') -> getCollection() -> initCache (...). Tạo bộ sưu tập mới từ phiên bản Chặn – davidselo

Các vấn đề liên quan