1
キャッシュとCookieのこのソリューションは問題を引き起こすでしょうか?
まったく一般的ではないが、人気のあるWPキャッシングソリューションとCookie(この場合は標準のWPコメントCookie)との相互作用に関する前例のない問題から、暫定的なソリューションを思い付きました。私のソリューションは、キャッシュファイルの提供に対する、あまり明確に定義されていない「既知のユーザー」例外にも関係しています。それが使用可能かどうかにかかわらず、それを説明し、おそらくそれが悪いアイデアである理由を学ぶことは、一般的に有益であると考えています。 WP Super Cache、W3 Total Cache、Comet Cacheでメソッドをテストしました。この問題の調査中に私が詳細に故障したのはWPスーパーキャッシュ(以下「WPSC」)であったため、これを主な例として使用します。 バックグラウンド 訪問者がコメントできるようにWP標準のコメントスレッドが設定されている場合、登録ユーザーではなくログインしているコメント作成者にはコメントCookieが設定され、実際のコメント権限はさらにチェックされます。私が最も一般的な構成だと思うのは、コメンターが名前とメールアドレスだけを提供する必要があることです。これらは2つのブラウザCookie(通常comment_author_ . COOKIEHASH、および)内に保存されますcomment_author_email_ . COOKIEHASH。COOKIEHASHユーザーオプションに従って定義されます。 新しく生成されたファイルを「既知のユーザー」に配信するように設定されている場合、WPSCはいくつかのチェックに基づいてキャッシュファイルを提供するかどうかを決定します。後者は主comment_author_に、特定のユーザーに対して特定または一意に識別されないCookie がブラウザに存在することによって識別されますCOOKIEHASH(通常、サイトオプションに記録される「siteurl」のMD5エンコードバージョンではありません)。 wp-cache-phase1.php LL371-383のWPSCコードの重要な部分と思われるものは、RegExパターンを使用して文字列を取得し、Cookieを循環させます。 $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( …