1. 정확한 제품 또는 플러그인 이름
KBoard, WP Optimize
2. 상세 내용
사이트 속도를 빠르게 하기 위해 캐시 플러그인을 설치했습니다.
그런데, 페이지 하단에 아래와 같은 주석 문구가 표시되고 캐시 처리가 안 되는 것 같아요.
게시판이 설치된 페이지라면 캐시가 문제될 수 있어 이해하겠지만 게시판이 설치되지 않은 페이지에서도 표시되고 있어요.
<!-- WP Optimize page cache - https://teamupdraft.com/wp-optimize/ - Page not served from cache -->
디버깅을 통해 "In the settings, caching is disabled for matches for one of the current request's GET parameters" 메시지가 표시되는 걸 확인했고
KBoard 쪽에서 $_GET 변수에 kboard_id, mod를 강제로 넣고 있는 걸 확인했습니다. 그 값이 없더라도요.
KBoard 플러그인 index.php 파일의 아래 코드들 문제로 예상합니다.
add_action('plugins_loaded', 'kboard_plugins_loaded');
function kboard_plugins_loaded(){
if(!session_id() && (!is_admin() || kboard_id()) && !wp_is_json_request()){
session_start();
}
// 언어 파일 추가
if(version_compare($GLOBALS['wp_version'], '6.7', '<')){
load_plugin_textdomain('kboard', false, dirname(plugin_basename(__FILE__)) . '/languages');
}
else{
load_textdomain('kboard', KBOARD_DIR_PATH . '/languages/kboard-' . determine_locale() . '.mo');
}
}
/**
* 테마 헤더에 정보 출력
*/
function kboard_get_header(){
// SEO 시작
include_once 'class/KBSeo.class.php';
$seo = new KBSeo();
}
add_action('get_header', 'kboard_get_header', 999);
케이보드가 설치되어 있지 않은 페이지에서도 저 코드가 실행되며 $_GET 변수에 kboard_id와 uid를 빈값으로 넣고 있어요
그러면서 WP Optimize 플러그인에서 제대로 캐시 처리를 못하고 있습니다.
개선이 가능할까요?
실제 $_GET 변수에 케이보드 관련 변수를 넣는 건 kboard_id(), kboard_mod() 함수에 있네요.
3. 확인 가능한 상세 페이지 주소
4. 수정한 코드 내역 (있다면)
안녕하세요~^^
저희 쪽에서도 문의주신대로 동일한 환경에서 한번 테스트를 해보고
빠른 시일 내에 개선가능한지 답변 다시 남겨드리겠습니다.
아래는 참고할만한 링크를 남겨드릴 테니 한번 참고해 보시겠어요?
https://www.cosmosfarm.com/threads/document/49756
https://www.cosmosfarm.com/threads/document/39490
고맙습니다.
플러그인 코드를 수정 시 업데이트하면 초기화 되는데 매번 업데이트할 때마다 코드를 수정해주어야 하는걸까요..?
AI에 의해 자동 생성된 답변이에요 😀
KBoard 플러그인과 WP Optimize 플러그인 호환성 문제로 인해 캐시 처리가 제대로 되지 않는 상황에 대해 문의주셨습니다.
제공해주신 정보에 따르면, KBoard 플러그인이 게시판이 설치되지 않은 페이지에서도 `$_GET` 변수에 `kboard_id`와 `mod` (또는 `uid`)를 빈 값으로 추가하여 WP Optimize 플러그인의 캐시 기능을 방해하고 있는 것으로 보입니다. WP Optimize는 `$_GET` 변수에 특정 파라미터가 있을 경우 캐시를 비활성화하는 설정이 있기 때문에 이러한 문제가 발생할 수 있습니다.
KBoard 플러그인의 `index.php` 파일 내 `plugins_loaded` 액션과 `get_header` 액션에서 실행되는 코드들이 이 문제의 원인으로 지목되고 있습니다. 특히 `kboard_id()` 및 `kboard_mod()` 함수에서 `$_GET` 변수를 조작하는 부분이 영향을 미치는 것으로 파악됩니다.
이러한 문제를 해결하기 위한 몇 가지 개선 방안을 제안해 드릴 수 있습니다.
1. **KBoard 플러그인 코드 수정 (권장):**
* `kboard_id()` 및 `kboard_mod()` 함수가 `$_GET` 변수를 무조건 추가하는 대신, 실제 KBoard 게시판이 로드되는 페이지에서만 해당 변수를 추가하도록 조건을 추가하는 것이 가장 근본적인 해결책입니다.
* 예를 들어, `is_kboard_page()`와 같은 함수를 만들어 현재 페이지가 KBoard 게시판 페이지인지 확인한 후 `$_GET` 변수를 설정하도록 코드를 수정할 수 있습니다.
* `add_action('get_header', 'kboard_get_header', 999);` 이 코드가 모든 페이지에서 실행되어 `KBSeo.class.php`를 포함하고 `kboard_id()` 등을 호출할 가능성이 있으므로, 이 부분도 KBoard 관련 페이지에서만 실행되도록 조건부 로딩을 고려해볼 수 있습니다.
2. **WP Optimize 캐시 설정 조정:**
* WP Optimize 플러그인의 캐시 설정에서 `kboard_id`와 `mod` (또는 `uid`) 파라미터가 있을 때도 캐시가 작동하도록 예외 처리를 할 수 있는지 확인해 보세요. 일부 캐시 플러그인은 특정 `$_GET` 파라미터를 무시하고 캐시를 생성하는 옵션을 제공하기도 합니다.
* 하지만 이 방법은 KBoard가 해당 변수를 사용하는 의도를 무시하게 될 수 있으므로, KBoard의 정상적인 동작에 영향을 줄 가능성도 있습니다.
3. **KBoard 개발팀에 문의:**
* 이 문제는 KBoard 플러그인의 설계와 관련된 부분일 수 있으므로, KBoard 개발팀에 해당 현상을 설명하고 공식적인 개선 방안이나 업데이트를 요청하는 것이 가장 확실한 방법입니다. 다른 사용자들도 동일한 문제를 겪고 있을 수 있으며, 개발팀에서 플러그인 업데이트를 통해 해결해 줄 수 있습니다.
현재로서는 KBoard 플러그인의 코드 수정이 가장 직접적이고 효과적인 해결책으로 보입니다. 다만, 플러그인 코드를 직접 수정할 경우 향후 플러그인 업데이트 시 수정 내용이 덮어씌워질 수 있으므로, 자식 테마의 `functions.php`를 이용하거나 별도의 플러그인을 만들어 수정하는 방법을 고려해볼 수 있습니다.
어떤 방법을 선택하시든, 변경 사항을 적용하기 전에 반드시 웹사이트 백업을 진행하시고 테스트 환경에서 먼저 확인해 보시는 것을 권장합니다.
↓ 아래 버튼을 눌러서 피드백해주세요.