2011-12-22 48 views
8

Trong Yii, tôi đã kích hoạt APC bộ nhớ đệm thông qua file config/main.php:Làm cách nào để vô hiệu hóa bộ nhớ đệm qua cấu hình trong Yii?

'cache' => array(
    'class' => 'system.caching.CApcCache', 
), 

và nó chỉ hoạt động tốt khi tôi sử dụng Yii tích hợp trong các phương pháp bộ nhớ đệm:

Yii::app()->cache->set('key', $value); 

Tuy nhiên, có cách nào để tạm thời tắt tính năng này dựa trên cấu hình không? Tôi không muốn kích hoạt nó trong khi YII_DEBUG được đặt thành true, ví dụ: và muốn $votes = Yii::app()->cache->get("key"); đến luôn luôn trả về false như khi nó trống.

Tôi đã cố gắng quay này tắt bằng cách chỉ cho ý kiến ​​ra các thiết lập cấu hình, nhưng nó mang lại (không hợp lý) lỗi: Call to a member function get() on a non-object

Trả lời

11

Bạn có thể cấu hình một lớp bộ nhớ cache mà không cache ở tất cả (vì vậy nó đã giành Không lưu trữ bất kỳ thứ gì và get() sẽ luôn trả về FALSE).

Có lẽ Yii đã giao hàng với bộ nhớ cache không? Có nó, nó được gọi là CDummyCache và nó không có bộ nhớ đệm ở tất cả.

Nó đã được viết cho vấn đề bạn phác thảo trong câu hỏi của bạn rằng Yii::app()->cacheNULL.

Xem CachingDocs.

-4

Hãy thử mã này:

'cache' => array( 
     'class' => 'system.caching.CFileCache' 
    ), 
+1

Xin giải thích câu trả lời trong lời nói, không chỉ trong mã. Và hãy giải thích câu trả lời của bạn khác với câu trả lời khác như thế nào, vì câu hỏi đã được trả lời gần một năm trước. –

+2

Tôi muốn * vô hiệu hóa * bộ nhớ đệm, không thay đổi cơ chế bộ nhớ đệm. Điều này sẽ chỉ thay đổi cách mọi thứ đã được lưu trữ. –

+0

Đây chỉ là một ví dụ về cách cấu hình Yii để lưu vào bộ nhớ cache. Nó không trả lời câu hỏi. Được gắn cờ để xóa. –

3

Nếu bạn cần phải vô hiệu hóa bộ nhớ cache chỉ tại địa phương thêm đoạn mã sau vào chính-local.php. Nó sẽ ghi đè cấu hình bộ nhớ cache trong main.php

'components' => [ 
... 
    'cache'=> [ 
     'class'=>'CDummyCache', 
    ], 
... 
] 

CDummyCache là phần giữ chỗ bộ nhớ cache.

CDummyCache không lưu vào bộ nhớ cache bất kỳ thứ gì. Nó được cung cấp để người ta luôn có thể cấu hình một thành phần ứng dụng 'cache' và anh ta không cần kiểm tra nếu Yii :: app() -> cache là null hay không. Bằng cách thay thế CDummyCache bằng một số thành phần bộ nhớ cache khác, người ta có thể nhanh chóng chuyển từ chế độ không lưu vào bộ nhớ đệm sang chế độ bộ nhớ đệm.

Yii 1.x: CDummyCache doc

Yii 2.x: DummyCache doc

+0

Kết quả này trong 'Lớp CDummyCache không tồn tại ' –

+0

Nếu bạn sử dụng Yii 2.X cần sử dụng yii \ caching \ DummyCache vs CDummyCache –

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