저희 사이트에는 WP-Rocket을 사용하고 있는데, 페이지 캐싱 (Cloudflare APO만 사용하는 경우에도 동일한 문제 발생) 때문에 댓글 수가 갱신되지 않고 있습니다. WP-Rocket *(그리고/또는 APO)*을 비활성화하고 해당 포럼 게시글에 답글을 작성해 검증해 보았는데, 댓글 수는 갱신되긴 하지만 불규칙하게 나타났습니다. 즉, 즉시나 예상처럼 바로 갱신되는 것이 아니었습니다.
그래서 웹훅을 추가하는 팁을 찾아 적용해 보았는데, 이렇게 하면 댓글 수가 안정적으로 갱신되었습니다.
하지만 페이지 캐싱이 켜진 상태 *(WP-Rocket 또는 APO)*에서 해당 웹훅을 사용하더라도, 누군가 포럼에 새 답글을 작성할 때 댓글 수가 갱신되지 않습니다.
핵심은 웹훅이 WP 환경을 제대로 트리거하여 캐시된 페이지의 새로고침을 유도하지 못하는 것 같습니다. 마치 매트릭스에 버그가 있는 것 같습니다.
수정: 한 가지 더 추가하자면, WP-Rocket을 설정해 두었기 때문에 제가 Wordpress에 로그인된 상태에서는 페이지가 캐시되지 않습니다. 방문객에게만 적용됩니다. Wordpress에 로그인된 상태에서는 댓글 수가 갱신되는 것을 볼 수 있지만, 프라이빗 브라우저 모드로 방문객으로 있을 때는 갱신되는 것을 볼 수 없습니다.
코드를 작성하다 보면 헤맬 것 같긴 한데 하하, 혹시 가능하게 만들어 주실 수 있다면요. 그러면 저를 비롯한 다른 사용자들도 한 걸음 더 올바른 방향으로 나아갈 수 있을 거예요. 말씀하신 수정 사항 덕분에 캐싱 플러그인 종류와 관계없이 캐시를 정리하기 위한 사용자 측 코드를 추가할 수 있게 되는 것 같은데, 특정 제품 하나에 집중하는 것보다 훨씬 나은 것 같습니다. 개발 사이트에서 여러 캐싱 방법을 시도해 봤지만, 어쨌든 결과는 모두 같았거든요.
당신이나 다른 누구의 실력을 의심하는 것이 아니며, 나는 아무것도 모릅니다. 하지만 WP Rocket, W3 Total Cache, WP Fastest Cache, 그리고 Varnish나 Nginx 같은 리버스 프록시 각각은 캐시를 삭제하는 데 서로 다른 도구가 필요하기 때문에 “또는 어떤 캐시” 같은 것은 있을 수 없다고 생각합니다.
그리고 WP Rocket이 댓글 섹션에서 페이지의 정적 부분, 즉 캐시를 생성하고 있다면, 캐시 삭제보다 훨씬 더 큰 문제가 있습니다.
WP-Rocket을 WP-Discourse와 함께 사용하면서 동일한 문제를 겪고 계신 분들을 위해, 아래 코드를 (WordPress 함수 파일에 삽입) 하시면 해당 Discourse 게시글에 댓글이 작성될 때 해당 게시글의 캐시를 자동으로 삭제하도록 설정할 수 있습니다.
if( function_exists( 'rocket_clean_post' ) ){
add_action( 'wpdc_after_webhook_post_update', 'bulk_rocket_clean_post’);
}
function bulk_rocket_clean_post(array $ids){
foreach ($ids as $id) {
rocket_clean_post($id);
}
}