2012-09-18 35 views
5

Làm thế nào người ta có thể tìm hiểu về bộ nhớ đệm của Doctrine MongoDB? Nhìn vào mã cho cấu hình nó không xuất hiện để có một bộ nhớ cache kết quả được xây dựng như Doctrine tiêu chuẩn, chỉ có một bộ nhớ cache truy vấn.Doctrine MongoDB kết quả trong bộ nhớ đệm

Tôi đã nghĩ đến việc tạo lớp bộ nhớ cache của riêng mình trong ứng dụng nhưng các đối tượng trả về khá nặng vì chúng chứa rất nhiều logic Doctrine không cần thiết cho khung nhìn. Làm thế nào tôi có thể ghép nối các đối tượng để chúng có hiệu quả chỉ là các thùng chứa dữ liệu?

Trả lời

5

Doctrine MongoDB ODM không hỗ trợ bộ nhớ đệm truy vấn, vì vậy đây chắc chắn là thứ bạn cần xử lý trong ứng dụng của bạn trong thời gian này.

Nếu bạn gặp sự cố với đối tượng nặng, rất có thể trường hợp Proxy (đối với tài liệu được tham chiếu), vì các tài liệu này chứa tham chiếu đến các dịch vụ Doctrine nội bộ (ví dụ: UnitOfWork). Nếu bạn muốn lưu các bộ đệm này một cách hiệu quả, về cơ bản bạn cần phải loại bỏ các tham chiếu đó trước khi lưu trữ và sau đó khôi phục chúng sau khi tìm nạp từ bộ nhớ cache. Đó có thể là rắc rối nhiều hơn giá trị của nó, nhưng nó sẽ làm giảm các đối tượng vào các thùng chứa dữ liệu mà bạn muốn.

Hoặc, nếu bạn đang sử dụng trình tạo truy vấn, bạn có thể vô hiệu hóa hydrat hóa và sau đó triển khai bộ nhớ đệm cho kết quả mảng được trả về. Ngoài ra, bạn có thể nhìn vào các khung nhìn bộ nhớ đệm trong ứng dụng của bạn (điều này lý tưởng trong Symfony2, trong đó một yêu cầu có thể nhấn nhiều bộ điều khiển, mỗi bộ điều khiển có thể áp dụng các quy tắc bộ đệm riêng của chúng và tùy chọn sử dụng ESI).

+0

vô dụng mongodb hầu hết mọi thứ không hỗ trợ –

+1

@SunilRawat ODM là một dự án mã nguồn mở, tiếp tục, triển khai bộ nhớ đệm và gửi PR thay vì ranting – malarzm

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