Không phải tất cả mã WP là mã công cộng
Nếu bạn định phát hành một cái gì đó công khai, thì tất cả những điều kovshenin nói là hoàn toàn hợp lệ.
Mọi thứ sẽ khác nếu bạn định viết mã riêng cho bản thân hoặc công ty.
Cache đối tượng bên ngoài là một lợi ích lớn, trong mọi trường hợp
Để thiết lập một bộ đệm đối tượng liên tục bên ngoài là rất nên , khi bạn có thể.
Tất cả những điều được nói trong câu trả lời của kovshenin về transents và MySQL là rất đúng, và xem xét rằng chính WP và một loạt các plugin sử dụng bộ đệm đối tượng ... sau đó cải thiện hiệu suất mà bạn có, hoàn toàn xứng đáng với nỗ lực (nhỏ) để thiết lập một hệ thống bộ đệm hiện đại như Redis hoặc Memcached.
Các giá trị được lưu trong bộ nhớ cache có thể không ở đó: Điều đó tốt
Hơn nữa, có, bộ đệm đối tượng bên ngoài không đáng tin cậy. Bạn không bao giờ nên dựa vào thực tế là một thoáng qua ở đó. Bạn cần chắc chắn rằng nó hoạt động nếu bộ nhớ cache không phải là nơi chúng nên được.
Bộ nhớ cache không lưu trữ, bộ nhớ cache là bộ nhớ cache.
Sử dụng bộ nhớ cache có chọn lọc
Xem ví dụ này:
function my_get_some_value($key) {
// by default no cache when debug and if no external object_cache
$defUse = ! (defined('WP_DEBUG') && WP_DEBUG) && wp_using_ext_object_cache();
// make the usage of cache filterable
$useCache = apply_filters('my_use_cache', $defUse);
// return cached value if any
if ($useCache && ($cached = get_transient($key))) {
return $cached;
}
// no cached value, make sure your code works with no cache
$value = my_get_some_value_in_some_expensive_way();
// set cache, if allowed
$useCache and set_transient($key, $value, HOUR_IN_SECONDS);
return $value;
}
Sử dụng một mã như thế này, trong trang web riêng tư của bạn, hiệu suất trang web có thể cải thiện rất nhiều , đặc biệt là nếu bạn có nhiều người dùng.
Lưu ý rằng:
- Theo mặc định, bộ đệm không được sử dụng khi gỡ lỗi, vì vậy hy vọng vào môi trường phát triển của bạn. Tin tôi đi, bộ nhớ cache có thể biến việc gỡ lỗi thành một địa ngục
- Theo mặc định, bộ đệm cũng không được sử dụng khi WP không được đặt để sử dụng bộ đệm đối tượng bên ngoài. Điều đó có nghĩa là tất cả các vấn đề được kết nối với MySQL không tồn tại, bởi vì bạn không sử dụng tạm thời khi họ sử dụng MySQL. Một sự thay thế có lẽ dễ dàng hơn là sử dụng các
wp_cache_*
chức năng , vì vậy nếu không có bộ đệm ngoài được thiết lập, thì bộ đệm sẽ xảy ra trong bộ nhớ và cơ sở dữ liệu không bao giờ liên quan.
- Việc sử dụng bộ đệm có thể lọc được, để xử lý một số trường hợp cạnh bạn có thể gặp phải
Không có webscale nếu không có bộ nhớ cache
Bạn không nên cố gắng giải quyết vấn đề tốc độ với bộ đệm. Nếu bạn có vấn đề về tốc độ, thì bạn nên nghĩ lại mã của mình.
Nhưng để mở rộng một trang web tại webscale, bộ nhớ cache là khá bắt buộc .
Và rất nhiều lần (nhưng không phải luôn luôn), bộ đệm nhận biết ngữ cảnh linh hoạt và phù hợp hơn nhiều so với bộ nhớ đệm toàn trang tích cực.
Những câu hỏi của bạn:
Tôi có nên sử dụng API tạm thời ở đây không?
Nó phụ thuộc .
Là mã của bạn tiêu thụ rất nhiều tài nguyên? Nếu không, có lẽ không cần cache. Như đã nói, không chỉ là vấn đề tốc độ. Nếu mã của bạn chạy nhanh nhưng nó đòi hỏi một loạt CPU và bộ nhớ cho một vài người dùng ... điều gì xảy ra khi bạn có 100 hoặc 1000 người dùng đồng thời?
Nếu bạn nhận ra bộ nhớ cache sẽ là một ý tưởng tốt ..
... Và là mã công khai: có thể là không . Bạn có thể xem xét để lưu trữ có chọn lọc, như trong ví dụ của tôi ở trên trong mã công khai, nhưng thường sẽ tốt hơn nếu bạn để các quyết định đó cho người thực hiện.
... Và là mã riêng: rất có thể là có . Nhưng ngay cả đối với mã riêng tư, để bộ nhớ cache chọn lọc vẫn là một điều tốt, ví dụ để gỡ lỗi.
Dù sao, hãy nhớ rằng các wp_cache_*
chức năng đó có thể cung cấp cho bạn quyền truy cập vào bộ đệm mà không có nguy cơ gây ô nhiễm cơ sở dữ liệu.
Tôi có nên sử dụng API tạm thời để lưu trữ mảng $ liên quan_posts hoặc chuỗi $ htmlDefput không?
Nó phụ thuộc vào rất nhiều thứ. Làm thế nào lớn là chuỗi? Bạn đang sử dụng bộ đệm ngoài nào? Nếu bạn định lưu các bài đăng vào bộ đệm, lưu trữ ID dưới dạng mảng có thể là một ý tưởng hay, truy vấn số lượng bài đăng kha khá bằng ID của họ khá nhanh.
Ghi chú cuối cùng
API thoáng qua có lẽ là một trong những điều tốt nhất của WordPress. Nhờ các plugin bạn có thể tìm thấy cho bất kỳ loại hệ thống bộ đệm nào, nó trở thành một API đơn giản ngu ngốc cho một số lượng lớn phần mềm có thể hoạt động dưới mui xe.
Bên ngoài WordPress, sự trừu tượng như vậy hoạt động vượt trội với một loạt các hệ thống bộ nhớ đệm khác nhau và cho phép bạn chuyển đổi từ hệ thống này sang hệ thống khác mà không cần nỗ lực là rất khó tìm.
Bạn hiếm khi có thể nghe tôi nói rằng WordPress tốt hơn những thứ hiện đại khác, nhưng API tạm thời là một trong số ít những điều tôi bỏ lỡ khi tôi không làm việc với WordPress.
Chắc chắn bộ nhớ cache rất khó, không giải quyết được các vấn đề về mã và không phải là viên đạn bạc, nhưng đó là thứ bạn cần để xây dựng một trang web có lưu lượng truy cập cao hoạt động.
Ý tưởng WordPress sử dụng bảng MySQL được tối ưu hóa để làm bộ đệm là khá điên rồ, nhưng tốt hơn hết là bạn nên tránh xa bộ đệm chỉ vì WordPress, theo mặc định, thực hiện nó.
Bạn chỉ cần hiểu cách mọi thứ hoạt động, sau đó đưa ra lựa chọn của bạn.