나는 일반적이지 않지만 임시 WP 캐싱 솔루션과 쿠키,이 경우 표준 WP 주석 쿠키와의 상호 작용에 대한 전례없는 문제와는 다른 임시 솔루션을 생각해 냈습니다. 내 솔루션은 캐시 파일을 제공하는 경우가 거의 정의되지 않은 "알려진 사용자"예외를 따릅니다. 그것이 쓸모가 있든 없든, 나는 그것을 설명하고 그것이 왜 나쁜 생각인지 배우는 것이 일반적으로 유익 할 수 있다고 생각합니다.
WP Super Cache, W3 Total Cache 및 Comet Cache로 내 방법을 테스트했습니다. 이 문제를 연구하는 동안 내가 자세히 알아 본 것은 WP Super Cache (이하 "WPSC") 였으므로이 예제를 기본 예제로 사용하겠습니다.
배경
WP 표준 주석 스레드가 방문자가 주석을 작성할 수 있도록 설정되면 등록 된 사용자가 아닌 로그인 한 주석 자에 대해 주석 쿠키가 설정되며 실제 주석 권한은 추가 검사를받습니다. 내가 가장 일반적인 구성이라고 생각하는 경우 주석 작성자는 이름과 전자 메일 주소 만 제공하면됩니다. 이들은 일반적 comment_author_ . COOKIEHASH
으로 및 두 개의 브라우저 쿠키 내에 저장됩니다 comment_author_email_ . COOKIEHASH
. COOKIEHASH
사용자 옵션에 따라 정의됩니다.
새로 생성 된 파일을 "알려진 사용자"에게 전달하도록 설정된 경우 WPSC는 몇 가지 검사를 기반으로 캐시 된 파일을 제공할지 여부를 결정합니다. 로그인 한 사용자는 새로운 파일을 가져 오므로 방문자는 "댓글을 작성할 수있는 사용자"입니다. 후자는 주로 comment_author_
쿠키 브라우저 에서 특정 사용자에 대해 구체적으로 또는 고유하게 식별되지 않는 쿠키 브라우저에 의해 식별됩니다 COOKIEHASH
(일반적으로 사이트 옵션에 기록 된 "siteurl"의 MD5 인코딩 버전은 아닙니다).
wp-cache-phase1.php LL371-383에서 WPSC 코드의 핵심 부분은 RegEx 패턴을 사용하여 쿠키를 순환하는 문자열을 가져옵니다.
$regex = "/^wp-postpass|^comment_author_";
if ( defined( 'LOGGED_IN_COOKIE' ) )
$regex .= "|^" . preg_quote( constant( 'LOGGED_IN_COOKIE' ) );
else
$regex .= "|^wordpress_logged_in_";
$regex .= "/";
while ($key = key($_COOKIE)) {
if ( preg_match( $regex, $key ) ) {
wp_cache_debug( "wp_cache_get_cookies_values: $regex Cookie detected: $key", 5 );
$string .= $_COOKIE[ $key ] . ",";
}
next($_COOKIE);
}
이제 PHP에서 엄격하게 작업하고 있다면 WP 핵심 함수를 재생성하거나 훅킹 comment_author_ . COOKIEHASH
하고 주석 템플릿으로 표준 세트를 가져올 수 있지만 jQuery Cookie 플러그인을 사용하여 jQuery에서 작업하고 있습니다. 당신이 정규식 보면 당신이 볼 수 그러나 WPSC 기능은 걱정하지 않습니다 COOKIEHASH
: 그것은 발생하면 그것은 만족 있어요 comment_author_
.
내 임시 솔루션
$.cookie( 'comment_author_proxyhash', 'proxy_author', { path: '/' } );
jQuery 쿠키에 익숙하지 않은 사용자의 경우 위의 내용은 키 = comment_author_proxyhash
및 값 = 으로 간단한 세션 쿠키를 설정 proxy_author
하여 전체 사이트에 적합합니다. (또한, 사전에 대체 친숙한 jQuery를 추가, jQuery를 쿠키 및 WP를 사용하는 사람들을 위해 $
WP를 들어 jQuery
, 나는 이미 설정했습니다 $.cookie.raw = true;
.)
나는 jQuery 스크립트에 줄을 추가했다 . , WPSC, W3 Total Cache 및 Comet Cache는 모두 내가 원하는 것처럼 작동합니다. 스크립트를 사용하고 새로 고침하면 새로운 페이지가 나타납니다. 실제 의견을 제시하면 일반 쿠키 comment_author_
와 comment_author_email_
쿠키가 설정되며 공존에 아무런 문제가없는 것 같습니다.
아마도 하나의 결함은 "proxyhash"쿠키가 사용자가 세션을 열어 두는 한 사용자와 함께 여행 할 것이지만, 이것이 중대한 문제 나 경고의 가치가있는 것처럼 생각 나지 않을 것입니다. 나는 일반 쿠키 중 하나에서 발생하는 그런 일에 대해 불평하는 사람을 확실히 들어 본 적이 없습니다.
하지만 어쩌면 내가 잃어버린 무언가가있을 수 있으며, 잠재적으로 내 교화에도 불구하고 나의 비애를 많이 발견하려고합니다. 또는 COOKIEHASH
jQuery에서 복제하여 대체 사용 사례를 다루는 상대적으로 간단한 모범 사례가 있거나 다른 방법으로 동일한 최종 효과를 얻을 수 있습니다. 캐싱 플러그인을 방문자를 처리하도록 속이는 다른 방법 해설자로서 ...
그렇지 않다면, 플러그인에서이 또는 그와 비슷한 것을 우주로 밀지 말아야 할 충분한 이유가 있습니까?
wp_localize_script
쿠키 해시를 자바 스크립트로 전달하여 proxyhash 대신 "기본"쿠키를 사용할 수 있습니다. 그렇지 않으면 이것은 매우 흥미로운 문제이며 쿠키 + 캐시는 항상 너무 복잡하지만 솔루션이 "올바른"솔루션인지 또는 놓친 것이 있는지 말하기는 어렵습니다. 훌륭한 연구!