Speculative Loading

설명

이 플러그인은 사용자 상호작용에 따라 특정 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).

다른 브라우저에서는 부작용이 나타나지 않지만 해당 클라이언트에서는 이 기능이 작동하지 않습니다.

이 플러그인은 이전에는 추측 규칙으로 알려졌습니다.

설치

워드프레스 내에서 설치

  1. 플러그인 > 새로 추가로 이동합니다.
  2. Speculative Loading을 검색합니다.
  3. Speculative Loading 플러그인을 설치하고 활성화합니다.

수동 설치

  1. 전체 speculation-rules 폴더를 /wp-content/plugins/ 디렉터리에 업로드합니다.
  2. 플러그인을 방문하세요.
  3. 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 프로그램을 방문하세요.

플러그인에 어떻게 기여할 수 있나요?

기여는 언제나 환영합니다! 핵심 퍼포먼스 팀 핸드북에서 참여 방법에 대해 자세히 알아보세요.

후기

2024년 7월 19일 답글 1개
I was using another plugin which does a similar job but Speculative Loading appears to be substantially quicker. Using on about 10 sites and no issues. Thank you
2024년 5월 27일
Es verkürzt die Ladzeit für einen Benutzer sichtbar, auch wenn im Hintergrund die Seite gleichschnell geladen wird, so fühlt es sich für einen Benutzer extrem schnell an.
2024년 5월 8일 답글 1개
I’ve currently activated this plugin on five sites, some on one server, and then others on another. The plugin has yet to present any plugin conflicts or other issues. The time to load pages is drastically improved based on user intent, and based on this alone, I cannot recommend this plugin enough. I haven’t tested the sites with Lighthouse, but honestly, I don’t feel the need to do that, because it’s about the user experience first, and that is such an improvement with this plugin. Thank you!
모든 16 평가 읽기

기여자 & 개발자

“Speculative Loading”(은)는 오픈 소스 소프트웨어입니다. 다음의 사람들이 이 플러그인에 기여하였습니다.

기여자

“Speculative Loading”(이)가 8 개 언어로 번역되었습니다. 기여해 주셔서 번역자님께 감사드립니다.

자국어로 “Speculative Loading”(을)를 번역하세요.

개발에 관심이 있으십니까?

코드 탐색하기는, SVN 저장소를 확인하시거나, 개발 기록RSS로 구독하세요.

변경이력

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

개선 사항

  • 추측적 로딩 플러그인 동작 링크에 설정 링크를 추가합니다. (1145)
  • 최소 PHP 버전을 7.2로 상향 조정합니다. (1130).

버그 수정

  • 추측 규칙에서 _wpnonce URL을 제외합니다. (1143)
  • 프리페치/프리렌더에서 rel=nofollow 링크를 제외합니다. (1142)

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)