설명
이 플러그인은 사용자 상호작용에 따라 특정 URL을 동적으로 미리 가져오거나 미리 렌더링하는 규칙을 정의할 수 있는 추정 규칙 API에 대한 지원을 추가합니다.
추정 규칙 WICG 사양 초안를 참조하세요.
기본적으로 플러그인은 사용자가 관련 링크 위로 마우스를 가져가면 워드프레스 프론트엔드 URL을 미리 렌더링하도록 구성됩니다. 이 설정은 설정 아래의 “추측적 로드” 섹션을 통해 사용자 정의할 수 있습니다.
필터를 사용하여 특정 URL 경로를 프리페칭 및 프리렌더링 대상에서 제외할 수 있습니다(FAQ 섹션 참조). 또는 미리 렌더링되지 않아야 하는 링크(<a<
태그)에 ‘no-prerender’ CSS 클래스를 추가할 수 있습니다. 자세한 내용은 FAQ를 참조하세요.
브라우저 지원
Speculative Rules API는 새로운 웹 API이며 플러그인에서 사용하는 기능은 버전 121 이상을 사용하는 Chrome, Edge 또는 Opera와 같은 Chromium 기반 브라우저에서 지원됩니다. Safari 및 Firefox와 같은 다른 브라우저에서는 이 기능을 무시해도 아무런 문제가 없지만 Speculative Loading의 이점을 누릴 수 없습니다. 확장 프로그램은 기본적으로 사전 로딩을 비활성화할 수 있습니다(예: uBlock Origin).
다른 브라우저에서는 부작용이 나타나지 않지만 해당 클라이언트에서는 이 기능이 작동하지 않습니다.
이 플러그인은 이전에는 추측 규칙으로 알려졌습니다.
설치
워드프레스 내에서 설치
- 플러그인 > 새로 추가로 이동합니다.
- Speculative Loading을 검색합니다.
- Speculative Loading 플러그인을 설치하고 활성화합니다.
수동 설치
- 전체
speculation-rules
폴더를/wp-content/plugins/
디렉터리에 업로드합니다. - 플러그인을 방문하세요.
- Speculative Loading 플러그인을 활성화합니다.
FAQ
-
특정 URL이 프리페치 및 프리렌더링되지 않도록 하려면 어떻게 해야 하나요?
-
모든 URL이 합리적으로 미리 렌더링될 수 있는 것은 아닙니다. 정적 콘텐츠를 미리 렌더링하는 것은 일반적으로 안정적이지만 로그아웃 URL과 같은 대화형 콘텐츠를 미리 렌더링하면 문제가 발생할 수 있습니다. 이러한 이유로
/wp-login.php
및/wp-admin/*
와 같은 특정 워드프레스 핵심 URL은 프리페칭 및 프리렌더링에서 제외됩니다. 또한wp_nonce_url()
로 생성된 URL(또는_wpnonce
쿼리 var가 포함된 URL)도 무시됩니다.plsr_speculation_rules_href_exclude_paths
필터를 사용하여 추가 URL 패턴을 제외할 수 있습니다.이 예에서는
https://example.com/cart/
또는https://example.com/cart/foo
와 같은 URL이 프리페칭 및 프리렌더링에서 제외되도록 합니다.<?php add_filter( 'plsr_speculation_rules_href_exclude_paths', function ( array $exclude_paths ): array { $exclude_paths[] = '/cart/*'; return $exclude_paths; } );
때로는 URL을 프리프린팅에서 제외하면서 프리페칭을 허용하는 것이 유용할 수 있다는 점을 기억하세요. 예를 들어, 사용자 상태를 업데이트하는 클라이언트 측 자바스크립트가 있는 페이지는 프리렌더링하지 않아야 하지만 프리페칭하는 것이 합리적일 수 있습니다.
이를 위해
plsr_speculation_rules_href_exclude_paths
필터는 조건부 제외를 제공하기 위해 현재 모드(“prefetch” 또는 “prerender” 중 하나)를 수신합니다.다음 예제는
https://example.com/products/...
와 같은 URL은 프리렌더링할 수 없도록 하면서도 프리페치할 수 있도록 하는 것입니다.<?php add_filter( 'plsr_speculation_rules_href_exclude_paths', function ( array $exclude_paths, string $mode ): array { if ( 'prerender' === $mode ) { $exclude_paths[] = '/products/*'; } return $exclude_paths; }, 10, 2 );
위에서 언급했듯이 링크에
no-prerender
CSS 클래스를 추가하면 링크가 미리 렌더링되지 않습니다(하지만 미리 가져오지는 않습니다). 또한 일부 플러그인에서는 비강력 링크(예: 장바구니에 추가)에 이 코드를 추가하기 때문에rel=nofollow
가 있는 링크는 프리피치되거나 프리렌더링되지 않습니다. 이러한 링크는 POST 요청을 트리거하는 버튼이거나 적어도wp_nonce_url()
를 사용해야 이상적입니다. -
분석 및 개인화에 어떤 영향을 주나요?
-
미리 렌더링은 분석 및 개인화에 영향을 줄 수 있습니다.
클라이언트 측 자바스크립트의 경우 페이지가 클릭될 때까지 지연시키는 것이 좋으며 일부 솔루션(예: Google 애널리틱스)은 이미 프리렌더에 대해 이 작업을 자동으로 수행합니다. 분석에 미치는 영향를 참조하세요. 또한 크로스오리진 아이프레임은 활성화될 때까지 로드되지 않으므로 이 문제를 더욱 방지할 수 있습니다.
호버링(보통)을 추측하면 이 신호 없이 페이지가 미리 로드될 확률이 높아지므로 여기서 위험을 줄일 수 있습니다. 또는 플러그인은 마우스/포인터 내려놓기(보수적)만 추측하도록 설정하여 위험을 더욱 줄이며, 리드 타임이 짧아지고 성능 향상 효과가 줄어드는 대신 이 문제를 우려하는 사이트를 위한 옵션입니다.
프리렌더링된 페이지는 프리렌더링된 페이지에 링크되어 있으므로 이 시점에서는 이미 개인화가 완료되었을 수 있으며 변경 사항(예: 다른 제품 탐색 또는 로그인/로그아웃)이 있으면 새 페이지를 로드해야 하므로 이를 고려한 새로운 프리렌더가 필요할 수 있습니다. 하지만 확실히 알아두고 테스트해야 할 사항입니다!
-
플러그인 피드백은 어디에서 제출할 수 있나요?
-
특히 이 플러그인에는 향후 워드프레스 핵심 기능이 포함될 수 있으므로 피드백을 보내주시면 감사하겠습니다. 새로운 기능에 대한 제안이나 요청이 있으면 워드프레스 성능 팀의 GitHub 리포지토리에서 이슈로 제출할 수 있습니다 . 문제 해결에 도움이 필요하거나 플러그인에 대한 질문이 있는 경우 지원 포럼에 새 주제를 작성하세요.
-
보안 버그는 어디에서 신고할 수 있나요?
-
성능 팀과 워드프레스 커뮤니티는 보안 버그를 심각하게 받아들입니다. 발견한 내용을 책임감 있게 공개해 주신 여러분의 노력에 감사드리며, 여러분의 기여를 인정하기 위해 최선을 다하겠습니다.
보안 문제를 신고하려면 WordPress HackerOne 프로그램을 방문하세요.
-
플러그인에 어떻게 기여할 수 있나요?
-
기여는 언제나 환영합니다! 핵심 퍼포먼스 팀 핸드북에서 참여 방법에 대해 자세히 알아보세요.
후기
기여자 & 개발자
변경이력
1.3.1
버그 수정
- 추측적 로딩을 제외할 때 rel에 nofollow가 아닌 nofollow가 포함되어 있는지 확인합니다. (1232)
1.3.0
개선 사항
- 업로드, 콘텐츠, 플러그인, 템플릿 또는 스타일시트 디렉토리에 대한 링크를 추측적으로 로드하지 않도록 합니다. (1167)
- 다른 플러그인/테마에 추측적 로딩을 쉽게 임베드할 수 있습니다. (1159)
- 더 엄격한 정적 분석 검사로 전반적인 코드 품질을 개선하세요. (775)
- 최소 PHP 요구 사항을 7.2로 상향 조정합니다. (1130).
1.2.2
버그 수정
- JSON 인코딩과 다른 사이트/홈 URL을 고려하도록 href 제외 경로의 구성을 수정했습니다. (1164)
문서
- 분석 및 개인화에 대한 브라우저 지원 및 FAQ 섹션으로 readme를 업데이트합니다. (1155)
1.2.1
개선 사항
버그 수정
1.2.0
- 플러그인의 데이터베이스 옵션을 제거하려면 누락된 uninstall.php를 추가합니다. (1128)
1.1.0
- 특정 URL 패턴을 프리렌더링 또는 프리페칭에서 제외하도록 허용합니다. (1025)
- 플러그인 이름을 “추측적 로딩”으로 변경합니다. (1101)
- 추측적 로딩 생성기 태그를 추가합니다. (1102)
- 최소 요구되는 WP 버전을 6.4로 상향 조정합니다. (1062).
- 테스트한 워드프레스 버전을 6.5로 업데이트합니다. (1027)
1.0.1
- 경로 접두사를 이스케이프하고 추측 규칙에서 경로 이름으로 제한합니다. (951)
- JSON 스크립트를 인쇄할 때 HTML5 스크립트 테마를 강제로 지원합니다. (952)
- 플러그인 디렉토리에 아이콘 및 배너 에셋을 추가합니다. (987)
1.0.0
- 추측적 로딩 플러그인을 독립형 플러그인으로 처음 출시했습니다. (733)