설명
이 플러그인은 특정 URL을 동적으로 미리 가져오거나 미리 렌더링하는 규칙을 정의할 수 있는 추정 규칙 API에 대한 지원을 추가합니다.
추정 규칙 WICG 사양 초안를 참조하세요.
기본적으로 플러그인은 사용자가 관련 링크와 상호 작용할 때 워드프레스 프론트엔드 URL을 미리 렌더링하도록 구성됩니다. 이는 설정; 읽기 관리자 화면의 “추측적 로드” 섹션을 통해 사용자 정의할 수 있습니다.
필터를 사용하여 특정 URL 경로를 프리페칭 및 프리렌더링 대상에서 제외할 수 있습니다(FAQ 섹션 참조). 또는 미리 렌더링해서는 안 되는 링크(<a<
태그)에 no-prerender
CSS 클래스를 추가할 수 있습니다. 자세한 내용은 FAQ를 참조하세요.
브라우저 지원
투기 규칙 API는 새로운 웹 API이며, 플러그인에서 사용하는 기능은 버전 121 이상을 사용하는 Chrome, Edge 또는 Opera와 같은 Chromium 기반 브라우저에서 지원됩니다. 사파리, 파이어폭스 등 다른 브라우저에서는 이 기능이 무시되며 투기성 로딩의 이점을 누릴 수 없습니다. 특정 브라우저 확장 프로그램은 기본적으로 사전 로딩을 비활성화할 수 있습니다.
이 플러그인은 이전에는 추측 규칙으로 알려졌습니다.
설치
워드프레스 내에서 설치
- 플러그인 > 새로 추가로 이동합니다.
- Speculative Loading을 검색합니다.
- Speculative Loading 플러그인을 설치하고 활성화합니다.
수동 설치
- 전체
speculation-rules
폴더를/wp-content/plugins/
디렉터리에 업로드합니다. - 플러그인을 방문하세요.
- Speculative Loading 플러그인을 활성화합니다.
FAQ
-
특정 URL이 프리페치 및 프리렌더링되지 않도록 하려면 어떻게 해야 하나요?
-
모든 URL이 합리적으로 미리 렌더링될 수 있는 것은 아닙니다. 정적 콘텐츠를 미리 렌더링하는 것은 일반적으로 안정적이지만 로그아웃 URL과 같은 대화형 콘텐츠를 미리 렌더링하면 문제가 발생할 수 있습니다. 이러한 이유로
/wp-login.php
및/wp-admin/*
와 같은 특정 워드프레스 핵심 URL은 프리페칭 및 프리렌더링에서 제외됩니다. 또한wp_nonce_url()
(또는_wpnonce
쿼리 변수가 포함된) 및nofollow
링크로 생성된 모든 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 애널리틱스와 같은 일부 솔루션은 이미 이 작업을 자동으로 수행합니다(분석에 미치는 영향 참조). 또한 교차 출처 아이프레임은 활성화될 때까지 로드되지 않으므로 이 문제를 더욱 방지할 수 있습니다.
기본값인
moderate
으로 추측하면 미리 렌더링된 페이지가 사용자가 방문하지 않을 위험이 줄어들므로 해당 링크를 미리 로드하는 부작용을 피할 수 있습니다. 반대로eager
추측하면 미리 렌더링된 페이지가 로드되지 않을 위험이 높아집니다. 또는 플러그인은 마우스/포인터 아래로만 추측(보수적)하도록 제공하여 위험을 더욱 줄이며, 리드 타임이 짧아져 성능 이득이 적은 대신 이를 우려하는 사이트가 선택할 수 있는 옵션입니다.프리렌더링된 페이지는 프리렌더링된 페이지에 링크되어 있으므로 이 시점에서는 이미 개인화가 완료되었을 수 있으며, 변경 사항(예: 다른 제품 탐색 또는 로그인/로그아웃)이 있는 경우 새 페이지를 로드해야 하므로 이를 고려한 새 프리렌더링이 필요한 경우가 많습니다. 하지만 반드시 알아두고 테스트해야 하는 기능입니다! 새 페이지 로드 없이 상태가 변경될 때 필요한 경우 표준 JavaScript DOM API를 사용하여 페이지에서 추측 규칙
<script<
요소를 제거하면 프리렌더링된 페이지를 취소할 수 있습니다. -
플러그인 피드백은 어디에서 제출할 수 있나요?
-
특히 이 플러그인에는 향후 워드프레스 핵심 기능이 포함될 수 있으므로 피드백을 보내주시면 감사하겠습니다. 새로운 기능에 대한 제안이나 요청이 있으면 워드프레스 성능 팀의 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)