
최근 WordPress 6.8 버전에 Speculative Loading 기능이 도입되고 워드프레스 lighthouse로 페이지 분석 시 브라우저 탭이 충돌하여 비정상적으로 종료되는 이슈가 발생했습니다. 도입된 이 기능은 페이지 로딩 성능을 향상시키기 위한 기능입니다. 사용자가 아직 클릭하지 않은 링크의 콘텐츠를 미리 로드하여 페이지 전환 시 더 빠른 반응 속도를 제공합니다. 이 기능은 사용자의 탐색 패턴을 예측하여 페이지나 리소스를 사전에 불러오는 방식으로 작동합니다.
이러한 문제는 특히 Lighthouse가 페이지의 리소스를 분석하는 과정에서 Speculative Loading으로 인해 예기치 않은 리소스 로딩이 발생하면서 충돌이 유발되는 것으로 추정됩니다.
워드프레스 Lighthouse 충돌 문제의 원인
Speculative Loading 기능은 페이지에 포함된 링크를 사전에 분석합니다. 사용자가 해당 링크를 클릭할 가능성이 높다고 판단되면 해당 페이지의 리소스를 미리 불러옵니다. 이 과정에서 Lighthouse 성능 측정 도구가 페이지의 로딩 상태를 분석하는데요. 이 때 예상치 못한 리소스 로딩이 발생하여 분석 과정에 혼란을 주고, 결국 브라우저 탭의 충돌로 이어질 수 있다는 부분이 원인입니다.
해결 방안
필자는 테마 파일 편집기에서 functions.php에 아래와 같은 코드를 삽입하여 해결했습니다. 이 방법은 speculative loading 기능을 강제로 해제하는 코드입니다. Lighthouse 충돌을 해결하여 분석을 성공했다면 functions.php 파일을 원래대로 복구하는 것을 추천드립니다.
add_filter('wp_speculative_loading_enabled', '__return_false');
remove_action( 'wp_head', 'wp_output_speculationrules_script' );
add_action('template_redirect', function (){
ob_start(function ($html) {
return preg_replace('/<script type="speculationrules">.*?<\/script>/s', '', $html);
});
});
WordPress 6.8의 Speculative Loading 기능은 페이지 성능과 사용자 경험을 향상시키기 위한 유용한 도구이지만, 현재는 Lighthouse와의 호환성 문제로 인해 이슈를 발생시키고 있습니다. 이러한 문제를 완전히 해결하기 위해서는 WordPress 개발팀의 공식적인 패치나 Chrome의 Lighthouse의 공식적인 업데이트가 필요할 것으로 보입니다. 그때까지는 위에서 제시한 임시 방편을 통해 문제를 완화할 수 있습니다.