Khi nào tôi nên sử dụng API Transents?


15

Tôi chưa bao giờ sử dụng API Transents trước đây và tự hỏi liệu có ai có hướng dẫn khi nào nên sử dụng API không. Các bài viết Codex ngụ ý rằng khi một nhà phát triển chủ đề tôi có thể muốn thiết lập mỗi mới WP_Query()như một thoáng qua; Tôi giả sử điều tương tự có thể được nói cho các truy vấn trực tiếp $ wpdb và query_posts(). Đó có phải là quá mức? Và / Hoặc có những nơi khác tôi nên mặc định sử dụng nó?

Tôi thường sử dụng các plugin lưu đệm trên trang web của mình (thường là W3 Total Cache) và có vẻ như việc sử dụng Transents có thể làm tăng hiệu quả của plugin nhưng tôi không muốn điên cuồng gói mọi thứ trong quá độ nếu đó không phải là cách tốt nhất.


Cảm ơn tất cả mọi người, tôi ước tôi có thể đánh dấu nhiều hơn một câu trả lời là "giải pháp". Thông tin tuyệt vời, nhiều đánh giá cao!
Michelle

Câu trả lời:


15

Transents rất tuyệt khi bạn thực hiện các truy vấn phức tạp trong các chủ đề và plugin của bạn. Tôi có xu hướng sử dụng tạm thời cho những thứ như menu và hiển thị những thứ khác như Tweets từ Twitter trong một thanh bên chẳng hạn. Tôi sẽ không sử dụng chúng cho tất cả mọi thứ nhiều hơn - vì vậy chỉ là những mẩu dữ liệu tạm thời có thể được lưu trữ.

Hãy nhớ rằng nếu bạn sử dụng một cái gì đó như Memcached với transents, thì bạn sẽ nhận thấy hiệu suất tăng rất lớn. Quy tắc với các quá độ là không sử dụng chúng cho dữ liệu không hết hạn vì chúng thực sự chỉ dành cho dữ liệu tạm thời và lưu ý rằng các quá độ không phải lúc nào cũng được lưu trữ trong cơ sở dữ liệu.

Một số sử dụng cho quá độ :

  • Các truy vấn cơ sở dữ liệu phức tạp và tùy chỉnh
  • Menu điều hướng Wordpress
  • Các tiện ích thanh bên hiển thị thông tin như; tweet, danh sách khách truy cập trang web gần đây hoặc luồng ảnh Flickr
  • Đám mây thẻ nhớ

Bài viết này là một bài viết rất nhiều thông tin với các điểm chuẩn nhanh cho thấy cách các khách hàng có thể tăng tốc trang web của bạn và thậm chí có một vài ví dụ. Bài viết khác này cũng có một vài ví dụ tuyệt vời về việc sử dụng tạm thời có thể giúp bạn hiểu những gì nên sử dụng chúng cho.


2
Một cách sử dụng khác: lưu trữ các yêu cầu HTTP bên ngoài. Giống như nhấn API twitter. Đừng làm điều đó trên mỗi lần tải trang, lưu trữ kết quả trong thời gian ngắn.
chrisguitarguy

10

Có một số cơ chế lưu trữ trong WordPress và cơ chế của chúng khác nhau, tùy thuộc vào lựa chọn bộ đệm đối tượng (nguyên gốc hay không):

+-----------+-------------------------+---------------------+
|           |         Native          | Object cache plugin |
+-----------+-------------------------+---------------------+
| Option    | Persistent (database)   | N/A                 |
| Transient | Persistent (database)   | Persistent (varies) |
| Cache     | Non-persistent (memory) | Persistent (varies) |
+-----------+-------------------------+---------------------+

Tóm lại, điều này có nghĩa là tạm thời luôn tồn tại (sẽ tồn tại giữa các lần tải trang không giống như Cache), nhưng nó sẽ sử dụng bộ nhớ tùy chỉnh nếu được cung cấp (không giống như Tùy chọn).

Điều này làm cho sự lựa chọn linh hoạt nhất cho bộ nhớ đệm.

Tuy nhiên, với sự linh hoạt đi kèm với sự phức tạp ngầm và có khá nhiều sắc thái với chúng (như giới hạn về độ dài tên, hành vi khác nhau có và không hết hạn, thiếu bộ sưu tập rác) khiến chúng phức tạp hơn vẻ ngoài của chúng.

Nhìn chung:

  • sử dụng Tùy chọn để lưu những thứ phải liên tục
  • sử dụng Transient để lưu trữ mọi thứ khác
  • sử dụng Cache khi bạn nắm bắt rất tốt cả ba và biết rằng Cache phù hợp với trường hợp sử dụng tốt hơn các trường hợp khác (điều này sẽ không thường xuyên)

3

Tôi nghĩ rằng mã từ Sterling có thể được cải thiện bằng cách không gọi hàm get_transient hai lần. Thay vào đó lưu trữ kết quả đầu tiên trong một biến tạm thời. Bởi vì ý tưởng đằng sau tốc độ ist API thoáng qua ;-)

private function _get_data( $query) {
    $result = get_transient( $query );
    if ( $result ) {
       return $result;
    } else { 
       return $this->_get_query( $query ); 
    }
}

2

Câu trả lời ngắn: Bạn nên sử dụng nó khi / nơi bạn có thể.

Câu trả lời dài:

API Transents dành cho bộ nhớ đệm. Vì vậy, bạn muốn sử dụng nó nhiều như bạn có thể. Bạn có thể viết một hàm làm điều này cho bạn.

Nó không quá mức cần thiết và nếu được thực hiện đúng cách sẽ trở nên khá thanh lịch:

// If the transient isn't false, then you can just get the cached version.
// If not, we'll call another function that runs a database query.
private function _get_data( $query) {
    return
    ( get_transient( $query ) ) ?
    get_transient( $query ) :
    $this->_get_query( $query );
}

// After you make the query, set the transient so you can leverage on caching plugins.
private function _get_query( $query ) {
  // Database logic. Results go to $results.
  ...
  set_transient( $query, $results , 0 ); // 0 Means cache for as long as you can.
}

2

API khách hàng thực sự hữu ích khi bạn tìm nạp dữ liệu từ các nguồn bên ngoài như Facebook, Twitter.

Để hiểu rõ hơn về API khách hàng là gì và sự khác biệt với chức năng Cache WordPress, tôi khuyên bạn nên xem cuộc nói chuyện của Otto và Nanic từ WordCamp San Francisco 2011

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.