메모리 캐싱을 사용하여 WordPress 기사 검색 통계 효율성 최적화

藏色散人
풀어 주다: 2019-09-24 10:05:30
앞으로
2755명이 탐색했습니다.

Memcached 메모리 캐싱은 많은 WordPress 기능을 최적화하고 WordPress를 더 빠르게 만들 수 있습니다. 다음 칼럼에서는 WordPress를 심층적으로 최적화하는 방법을 소개합니다.

메모리 캐싱을 사용하여 WordPress 기사 검색 통계 효율성 최적화

메모리 캐시를 사용하여 WordPress 기사 탐색 통계 효율성을 최적화합니다.

WordPress 기본 사용자 정의 필드 캐싱 방법

일반 기사 탐색 통계 플러그인은 데이터 저장을 위해 사용자 정의 필드를 사용합니다. 서버에 Memcached 메모리 캐시가 활성화되어 있는데 사용자 정의 필드의 데이터는 어떻게 캐시됩니까? WordPress에서는 $post_id를 캐시_키로 사용하고 'post_meta'를 캐시 그룹으로 사용하여 전체적으로 캐싱합니다. 그래서 사용자 정의 필드를 업데이트하는 것은 $post_id 아래 모든 사용자 정의 필드의 캐시를 업데이트하는 것과 동일하며 기사를 볼 때마다 사용자 정의 필드 데이터가 1씩 증가하므로 매번 사용자 정의 필드의 캐시가 업데이트되면 페이지당 3개의 SQL 쿼리가 더 있게 됩니다.

메모리 캐시를 사용하여 기사 탐색 통계 효율성 최적화

이 문제를 해결할 방법이 있나요? 먼저 기사의 검색 통계를 메모리에 캐시한 다음 매번 10개의 보기를 추가한 후 데이터베이스에 쓸 수 있습니다. 이렇게 하면 WordPress 작업에서 사용자 정의 필드 변경으로 인해 발생하는 SQL 쿼리 수를 크게 줄일 수 있습니다. 위 코드를 현재 테마의 funtions.php 파일에 복사하세요.

// 更新文章浏览数的时候,首先更新到内存中,然后每10次,才写到数据库中
add_filter('update_post_metadata', function($check, $post_id, $meta_key, $meta_value){
if($meta_key == 'views'){
if($meta_value % 10 != 0){
$check= true;
wp_cache_set($post_id, $meta_value, 'views');
}else{
wp_cache_delete($post_id, 'views');
}
}
return $check;
}, 1, 4);
// 获取文章浏览数的时候,首先从内存中获取,没有才从数据库中获取
add_filter('get_post_metadata', function($pre, $post_id, $meta_key){
if($meta_key == 'views'){
$views= wp_cache_get($post_id, 'views');
if($views !== false){
return [$views];
}
}
return $pre;
}, 1, 3);
로그인 후 복사

작은 문제가 있을 수도 있습니다. Memcached의 캐시는 지속성이 없기 때문에 주의하세요. 메모리캐시를 비우면 기사 조회수는 떨어지겠지만, 당연히 10회 미만이겠죠.

WPJAM Basic 플러그인에 Memcached가 통합되었습니다. WPJAM Basic을 다운로드한 후 wpjam-basic/template/ 디렉터리에 있는 object-cache.php 파일을 wp-content 디렉터리에 복사하세요.

위 내용은 메모리 캐싱을 사용하여 WordPress 기사 검색 통계 효율성 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:wpjam.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!