WordPress의 과도기 가이드

게시 됨: 2023-02-12

WordPress 개발자로서 성공적인 웹 사이트에 성능이 얼마나 중요한지 이미 알고 있을 것입니다. 그러나 WordPress의 과도 현상을 이해하고 프로젝트를 최적화하는 데 도움이 되는 방법은 약간 까다로울 수 있습니다.

다행스럽게도 과도 현상을 분해하면 과도 현상을 이해하기가 그리 어렵지 않습니다. 몇 가지 주요 지침을 염두에 두는 한 다음 WordPress 플러그인에 통합하는 방법을 잘 알고 있어야 합니다.

이 게시물에서는 WordPress 과도 현상이 무엇인지, 언제 어떻게 사용하는지에 대한 개요를 제공합니다. 다루어야 할 땅이 많으니 바로 시작합시다!

목차
1. WordPress 과도 현상이란 무엇입니까?
2. WordPress 사이트에서 과도기 사용의 이점
3. WordPress 사이트에서 Transients 사용의 단점
4. WordPress Transients를 사용하는 경우
5. WordPress 과도 현상 관리
6. 과도 상태에서 사용되는 기본 연산
6.1. 1. 과도 설정
6.2. 2. 과도 현상 검색
6.3. 3. 과도 현상 삭제
7. 임시 만료: 어떻게 작동합니까?
8. WordPress Transients API 이해
8.1. Transients API 백엔드의 두 가지 가장 일반적인 구현:
9. 개발에 과도기 적용하기
10. WordPress 사이트로 더 많은 작업 수행

WordPress 과도 현상이란 무엇입니까?

일시적 현상을 이해하려면 캐싱 및 API(응용 프로그램 프로그래밍 인터페이스)에 대한 기본 지식이 있으면 도움이 됩니다.

웹 페이지 데이터 캐싱은 본질적으로 웹 사이트 데이터를 일시적으로 저장하는 방법이므로 동일한 데이터에 대한 여러 요청이 있는 경우 사이트에서 MySQL 또는 PHP를 다시 실행할 필요가 없습니다. 이를 통해 몇 초의 시간을 절약하고 서버 부하를 줄일 수 있습니다.

아이디어는 데이터를 일시적으로 유지하는 것이므로 "일시적"이라는 단어가 사용됩니다. Transients API는 WordPress Options API와 유사합니다. 데이터에 이름과 값(다단계 PHP 배열처럼 복잡할 수 있음)을 지정하면 데이터가 저장됩니다. 나중에 아마도 다른 요청에서도 해당 이름을 사용하여 해당 데이터를 검색할 수 있습니다. 차이점은 옵션 테이블의 데이터가 영원히 유지된다는 것입니다. 즉, 데이터를 저장할 수 있고 3년 후에도 데이터가 그대로 유지됩니다.

모든 과도 현상은 세 부분으로 구성됩니다.

  • $transient. 트랜지언트를 식별하고 호출하는 데 사용되는 문자열입니다. 트랜지언트의 '키' 또는 '이름'이라고도 합니다.
  • $값. 이것은 API를 통해 검색되는 정보입니다. 일시적인 값은 객체, 배열, 숫자 또는 문자열이 될 수 있습니다.
  • 만료. 임시 항목이 삭제되고 API를 통해 필요한 정보에 다시 액세스해야 하기 전에 데이터베이스에 머무는 기간입니다.

표면적으로는 WordPress 과도 현상이 전부입니다. 그러나 제대로 사용하려면 더 알아야 할 사항이 있습니다.

그러나 과도 데이터는 유지되지 않습니다. 그게 요점이야! 데이터를 요청하고 두 가지 방법 중 하나로 누락된 것을 찾을 수 있습니다. 먼저 데이터를 저장할 때 만료 날짜를 지정합니다. 예를 들어 "이것을 3시간 동안 보관하세요."라고 말할 수 있습니다. 따라서 4시간 이후에 요청하면 누락됩니다.

두 번째 방법은 데이터 조각이 어떤 이유로든 언제든지 사라지도록 허용하는 것입니다. 이상하게 들리는데 나도 알아! 믿을 수 없다면 데이터를 저장하는 이유는 무엇입니까? 요점은 저장소가 WordPress가 존중하려고 시도하는 요청이라는 것입니다. 그러나 이러한 유연성으로 인해 임시 저장소에 대해 다른 종류의 구현을 사용할 수 있으며 이는 임시 저장소를 매우 효율적으로 만들기 위해 다른 고급 기술을 사용할 수 있음을 의미합니다. , 다중 서버 클러스터 환경에서도 제대로 작동합니다.

이 "언제든지 사라지는" 것 때문에 일반적으로 일시적인 캐시를 사용합니다. 즉, 느린 MySQL 쿼리와 같이 실시간으로 처리해야 하거나 누군가의 Twitter 또는 RSS 피드와 같은 외부 소스에서 데이터를 검색해야 하는 경우 계산된 데이터를 일시적으로 저장할 수 있습니다. 항상 다시 만들 수 있습니다. 그러나 일반적인 경우(누락되지 않는 경우) 재계산할 필요 없이 빠르게 데이터를 얻을 수 있습니다.

WordPress 사이트에서 과도기 사용의 이점

앞서 언급한 바와 같이 임시 사용자의 주요 이점은 웹 사이트 성능을 향상시킨다는 것입니다. 다음은 Google 사이트 키트 플러그인을 예로 사용하여 작동 방식에 대한 대략적인 개요입니다.

플러그인이 활성화되면 API를 사용하여 Analytics 및 Search Console과 같은 플랫폼의 데이터를 WordPress 대시보드에 표시합니다. 과도 현상이 없으면 WordPress는 Site Kit 대시보드를 볼 때마다 각 도구에서 이 정보를 검색해야 합니다.

대신 Site Kit에는 애널리틱스 및 Search Console의 데이터를 캐시하는 일시적인 데이터가 포함되어 있습니다. 하루(또는 플랫폼이 데이터를 반환하지 않는 경우 1시간) 동안 저장됩니다.

이후에 Site Kit 대시보드에 액세스할 때마다 WordPress는 API를 다시 호출하지 않고 데이터베이스에서 저장된 정보를 빠르게 검색할 수 있습니다. 만료 기간이 만료되면 이전 데이터가 삭제됩니다.

즉, 매번 결과가 로드될 때까지 기다릴 필요가 없습니다. 이것은 게시물에 대한 소셜 미디어 공유 수를 표시하거나 뉴스피드를 표시하는 등 다양한 상황에서 유용합니다.

WordPress 사이트에서 과도 사용의 단점

Transients에서 문제를 일으키는 것은 플러그인/테마가 다른 과도 구현에서 실행될 때 발생하는 동작이 다르고 재현하기 어렵기 때문입니다. 과도 구현이 다르다는 것은 특정 유형의 사이트가 있는 특정 구성에서만 문제가 발생하고 다른 사이트에서는 발생하지 않는다는 것을 의미합니다. 개발자로서 이 함정을 인지하지 못하고 그에 따라 코딩을 하지 않는다면 자신의 코드가 건전하다고 생각할 수 있지만 실제로는 현장에서 깨질 것이고 이를 재현하는 방법조차 모를 것입니다. !

WordPress Transients를 사용하는 경우

임시 항목은 만료 기간이 끝나면 데이터베이스에서 삭제됩니다. 따라서 지속적으로 재생성되는 정보에만 사용하려고 합니다.

또한 프로젝트의 성능을 향상시킬 수 있지만 과도는 대규모 쿼리 및 원격 호출에 가장 적합합니다. 필요할 때마다 리소스에 대한 새로운 요청을 하는 것보다 과도를 생성하는 데 더 많은 코드가 필요한 경우 없는 것이 좋습니다.

WordPress 임시 관리

현재 WordPress 사이트에서 작업 중인 과도 현상을 쉽게 보고 관리하려면 Transients Manager 플러그인을 설치할 수 있습니다.

도구 > 과도 로 이동하여 찾을 수 있는 전체 과도 목록을 제공합니다.

여기에서 이전에 나열한 세 가지 임시 요소인 키(이름), 값 및 만료 기간을 모두 볼 수 있습니다. 편집 링크를 클릭하여 이러한 기능을 편집할 수 있습니다.

과도를 개별적으로 또는 일괄적으로 삭제할 수도 있습니다.

과도 현상에 사용되는 기본 연산

자신만의 트랜지언트를 코딩할 때 사용해야 할 세 가지 기본 작업이 있습니다. 아래에 각각에 대해 설명했으며 Site Kit를 예로 계속 사용합니다.

1. 과도 설정

트랜션트 생성 또는 '설정'은 키, 값 및 만료 기간을 정의하고 해당 정보를 관련 데이터에 적용하는 프로세스입니다. 이렇게 하려면 다음 형식을 사용합니다.

 Set_transient ('key', $value, expiration_period)

다음은 분석 데이터를 저장하는 과도를 설정하기 위해 Google 사이트 키트에서 사용되는 코드입니다.

 // Cache "data found" status for one day, "no data" status for one hour. set_transient( $transient_key, (int) $has_data, $has_data ? DAY_IN_SECONDS : HOUR_IN_SECONDS ); } return (bool) $has_data; } }

임시 키는 googlesitekit_analytics_has_data (코드의 앞부분에서 정의됨)이고 값은 $has_data 또는 $has_data ? , 만료 기간은 1일 또는 1시간(값에 따라 다름)입니다.

2. 과도 현상 검색

과도 현상 검색은 조금 더 복잡합니다. 먼저 필요한 데이터를 요청하는 기능을 사용해야 합니다. 그런 다음 새 API 요청을 만드는 대신 로드해야 하는 해당 과도 현상이 있는지 확인합니다.

결과는 다음과 같습니다.

 function some_function(){ $transient = get_transient('key');

그런 다음 임시 데이터를 반환하거나 만료된 데이터를 삭제하고 소스를 새로 호출해야 합니다. 마지막으로 새 데이터를 반환한 일시적으로 설정해야 만료 기간이 끝날 때까지 다시 저장됩니다.

Google 사이트 키트에서는 다음과 같이 표시됩니다.

 /** * Checks whether Analytics data exists for the given URL. * * @since 1.4.0 * * @param string $url The url to check data for. * @return bool */ protected function has_data_for_url( $url ) { if ( ! $url ) { return false; } $transient_key = 'googlesitekit_analytics_has_data_' . md5( $url ); $has_data = get_transient( $transient_key ); if ( false === $has_data ) { /* @var Google_Service_AnalyticsReporting_Report[]|WP_Error $reports Array of reporting report instances. */ $reports = $this->get_data( 'report', array( 'url' => $url, 'metrics' => array( array( 'expression' => 'ga:users' ), array( 'expression' => 'ga:sessions' ), ), ) ); if ( is_wp_error( $reports ) ) { $reports = array(); // Bypass data check and cache. } foreach ( $reports as $report ) { /* @var Google_Service_AnalyticsReporting_Report $report Report instance. */ $report_data = $report->getData(); /* @var Google_Service_AnalyticsReporting_ReportData $report_data Report data instance. */ foreach ( $report_data->getTotals() as $date_range_values ) { /* @var Google_Service_AnalyticsReporting_DateRangeValues $date_range_values Values instance. */ if ( isset( $date_range_values[0], $date_range_values[1] ) && ( 0 < $date_range_values[0] || 0 < $date_range_values[1] ) ) { $has_data = true; break 2; } } }

그런 다음 이 코드 다음에는 과도 설정을 위해 이전 섹션에 포함된 스니펫이 와야 합니다.

3. 과도 현상 삭제

경우에 따라 일시적인 현상을 제거하고 싶을 수도 있습니다. 예를 들어, Google Site Kit에서 항상 최신 분석을 보려면 데이터를 캐시하지 않는 것이 좋습니다(실제로 Site Kit의 임시 항목을 삭제하는 것은 권장하지 않음).

그렇지 않으면 새로운 방문자가 있더라도 플러그인은 하루 종일 동일한 결과를 표시합니다. 과도 현상은 24시간 동안 지속되므로 오후에 보는 데이터는 아침에 로드한 데이터의 캐시된 버전일 뿐입니다.

과도를 삭제하는 가장 쉬운 방법은 과도 관리자 플러그인을 사용하는 것입니다. 그러나 코드를 대신 사용하려면 delete_transient() 함수를 넣어 사용할 수 있습니다. 임시 키만 있으면 됩니다.

 delete_transient('key');

그러나 삭제하려는 각 트랜지언트에 대해 이 작업을 반복해야 합니다.

임시 만료: 어떻게 작동합니까?

임시 만료 기간은 몇 가지 다른 방법으로 표현할 수 있습니다. 가장 간단한 두 가지 옵션은 다음과 같습니다.

  • 초 단위( set_transient('key', $value, 86400))
  • WordPress 시간 상수 사용( set_transient('key', $value, DAY_IN_SECONDS))

또는 만료되지 않는 과도 상태를 설정할 수도 있습니다. 이는 캐시된 정보를 수동으로 삭제하고 재설정할 때까지 임시 데이터를 동일하게 유지하려는 상황에서 유용할 수 있습니다.

만료되지 않는 과도 상태를 생성하는 것은 매우 간단합니다. set_transient 함수의 만료 매개변수를 공백으로 두거나 0으로 식별하기만 하면 됩니다.

WordPress Transients API 이해

WordPress Transients API는 단순히 정보가 사이트의 데이터베이스에 캐시되는 수단입니다. 과도 설정, 가져오기 및 삭제를 포함하여 이 게시물 전체에서 논의한 모든 관련 작업을 활성화합니다.

즉, Transients API는 Transients를 사용할 수 있게 해주는 WordPress 핵심의 일부일 뿐입니다.

Transients API 백엔드의 두 가지 가장 일반적인 구현:

  1. WordPress에 내장되어 있으므로 지금까지 가장 일반적입니다. 임시 값은 일반 옵션과 마찬가지로 wp_options 테이블에 저장됩니다. 일시적인 경우 만료 날짜를 유지하기 위해 추가 옵션이 저장됩니다. 임시 항목에 액세스하면 WordPress는 먼저 만료 날짜를 가져옵니다. 만료된 경우 WordPress는 테이블에서 두 옵션을 모두 삭제하여 데이터를 "정리"하고 데이터가 없었던 것처럼 가장합니다. 만료되지 않은 경우 옵션 테이블에서 콘텐츠를 가져옵니다.
  2. 멤캐시드. Memcached는 Transients API가 수행해야 하는 작업을 정확히 수행하도록 설계된 매우 간단하면서도 효율적이고 안정적인 서버 측 소프트웨어입니다. 즉, 지정된 시간에 만료되고 필요할 때 언제든지 사라질 수 있는 키를 기반으로 데이터를 저장합니다. 에게.

WordPress Transients 대신 memcached를 사용하면 두 가지 특별한 이점이 있습니다. 이것이 바로 여기 WP Engine에서 자동으로 사전 구성되는 이유입니다. 우리는 당신의 등을 가지고

나. Memcached는 WordPress Transients보다 값을 저장하고 검색하는 데 10배-100배 더 빠릅니다. Transients의 포인트는 사이트의 속도를 높이기 위해 데이터를 캐시하는 것이기 때문에 특히 흥미롭습니다.

ii. Memcached는 데이터가 차지하는 최대 공간을 설정합니다(예: 64MB RAM). 즉, 사이트가 한 번에 너무 많은 데이터를 저장하면 자동으로 오래된 데이터를 버리므로 공간이 부족하지 않습니다. 그러나 내장된 WordPress Transients는 옵션 테이블에 임의의 양의 데이터를 저장합니다.

개발에 과도 적용

동일한 Transients 키를 반복적으로 읽고 쓰고 있고 데이터가 1k라고 가정합니다. 이 경우 Memcached와 WordPress Transients는 모두 예상대로 작동하며 둘 다 약 1k의 공간을 차지합니다(옵션 테이블 또는 memcached에서).

이제 각 브라우저 세션마다 서로 다른 Transients 키를 읽고 쓴다고 가정합니다. 요컨대, 사용자 세션 데이터를 Transients에 저장한다면 어떨까요? 이것은 표면적으로 의미가 있습니다. 세션 데이터는 영원히 지속되지 않아야 하며 특별한 데이터베이스 테이블에 신경쓰고 싶지 않을 것입니다. 그 외에도 많은 WordPress 호스팅 회사는 PHP 세션을 허용하지 않으므로 이것이 차선책입니다. 심지어 빠르고 다중 서버입니다.

여기에서 차이점이 나타납니다. Memcached와 트래픽이 적은 사이트에서는 이 방법이 작동하는 것으로 보입니다. 값은 한동안 지속되었다가 만료되면 삭제됩니다. 그러나 서버가 과도하게 로드되면 서버가 저장해야 하는 세션 데이터의 양이 memcached에서 사용 가능한 공간을 초과하므로 생각보다 빨리 세션 데이터가 손실되기 시작합니다. 그리고 이렇게 로드가 많은 정확한 환경에서 테스트하지 않았다면 절대 알 수 없었을 것입니다. 일반적으로 이러한 환경은 memcached를 너무 빨리 채우므로 유용할 만큼 오랫동안 데이터를 보유할 수 없기 때문에 효과적으로 memcached가 비활성화됩니다. 임시 API 캐시가 전혀 없습니다!

그러나 WordPress Transients를 사용하면 다르지만 여전히 매우 바람직하지 않은 동작이 발생합니다. 값은 고정 크기의 RAM 블록이 아니라 데이터베이스에 기록되기 때문에 모두 고정됩니다. 즉, 로드가 많은 사이트에서도 여전히 세션 데이터가 있습니다. 엄청난!

또는 그렇게 생각했습니다. Transient API에서 언급되지 않은 것은 세션과 같은 고유 키를 사용할 때 발생하는 일이기 때문입니다. 그리고 내장된 방법에서 일어나는 일은 옵션 테이블이 무기한으로 채워지는 것입니다! 이유: 워드프레스의 "오래된 데이터 정리"는 키를 요청할 때만 작동합니다(앞에서 다룬 것처럼). 키를 그대로 두면 옵션 테이블에 영원히 남습니다. 이를 정리하는 별도의 프로세스가 없습니다!

우리는 이 문제를 알고 있을 뿐만 아니라 이를 이해하지 못하는 코드를 실행하고 있는 고객을 돕고 싶습니다. 여기에서 Managed WordPress의 "관리" 기능이 제공됩니다! 매일 밤 우리는 옵션 테이블에서 만료된 일시적 항목을 살펴보고 삭제하는 자동화된 프로세스를 가지고 있습니다(데이터 및 만료 날짜 항목 모두). 팔! 그들은 사라졌고 당신은 그들에 대해 걱정할 필요가 없습니다.

그래서 우리가 이렇게 하는 것은 멋진 일이지만, 모든 호스팅 환경에서 제대로 작동해야 하는 일반 플러그인 또는 테마의 개발자로서 플러그인이나 테마가 배포될 수 있는 모든 잠재적 환경에서 이 작업을 수행할 수 없으며, 사용자와 고객에게 가능한 한 가장 최적화된 코드를 제공하고 있는지 확인하고 싶습니다.

그러나 이제 Transients가 어떻게 잘못될 수 있는지 알았으므로 코드를 보다 효율적으로 만들 수 있는 방법을 살펴보고 확인하는 것은 멋진 아이디어일 수 있습니다. 여기까지 읽으셨다면 코드를 최적화하는 것을 좋아하실 것입니다. 이 블로그 게시물은 여러분을 위해 도전을 포기하고 더 확장 가능하도록 몇 가지 사항을 다시 작성하도록 동기를 부여할 수 있습니다!

WordPress 사이트로 더 많은 작업 수행

WordPress 개발자로서 최종 사용자에게 빠른 성능을 유지하면서 원격 데이터에 대한 액세스 권한을 제공하는 것이 중요합니다. WordPress 일시적인 기능은 이를 달성하는 데 도움이 될 수 있습니다.

그러나 초고속 WordPress 호스팅 및 전문 개발자 리소스에서 약간의 추가 도움을 받는 것은 나쁘지 않습니다. 코딩을 처음 접하든 노련한 프로든 상관없이 도움을 드릴 준비가 되어 있습니다. 오늘 우리의 계획을 확인하십시오!