링크 프리페치

Link prefetching

링크 프리페치를 통해 웹 브라우저가 리소스를 사전 로드할 수 있다.이것은 웹 페이지의 로드와 렌더링 속도를 모두 향상시킨다.Prefetching은 HTML5에 처음 도입되었다.

프리페치(prefetching)는 웹 페이지의 힌트를 통해 이루어진다.이러한 힌트는 브라우저에서 링크를 프리페치하는 데 사용된다.프리페치할 수 있는 자원은 자바스크립트, CSS, 이미지, 오디오, 비디오, 웹 폰트 등이다.DNS 이름과 TCP 연결도 프리페치(prefetching)를 암시할 수 있다.[1][2]

HTML5에서 프리페치

HTML5용 프리페치(prefetching)를 다루는 두 가지 W3C 표준이 있다.

  • 링크 프리로드[1]
  • 리소스 힌트[2]
    • 브라우저에 대한 힌트.일반적인 힌트로는 DNS 쿼리, TCP 연결 열기, 페이지 사전 렌더링 등이 있다.

사전 추출 힌트를 위한 HTML5 방법:

링크: <//pagead2.googlesyndication.com>, el=rel=prefetch, </js/bootstrap.min.js>, as=script, el=preload, </ads.cs>, el=preload, </css/bootstrap.min.css>, as=styleload

브라우저 지원

브라우저 프리페치 지원됨
표준 링크 프리페치 DNS 프리페치 프리렌더링 게으른 부하(이미지)
안드로이드 브라우저 [5] 아니오[5] 아니오[5] 아니요.
크롬 [5] [5] [5] 아니요.
구글 크롬 [5] [5] [5] 아니요.
인터넷 익스플로러 [6] [6] [6] [6]
모질라 파이어폭스 [5] [5] 아니오[7] 아니요.
오페라 [5] 아니오[5] 아니오[5] 아니요.
사파리 아니오[5] [5] 아니오[5] 아니요.

역사적

모던 브라우저

  • Mozilla Firefox는 버전 3.5를 기준으로 DNS 프리페치를 지원한다.[9]
  • 구글 크롬은 버전 11을 기준으로 '프리렌더링'을 통해 링크드 웹 콘텐츠의 프리페치를 지원한다.[10]
  • Internet Explorer는 버전 9를 기준으로 "DNS 프리페치"를 통해 IP 주소의 프리페치를 지원한다.[11]
    • 버전 11을 기준으로 Internet Explorer는 프리페치 기능을 확장하기 위해 "프레렌더", "dns-프리페치", "래지로드"(이미지만 해당) 등의 기능을 지원한다.[6]

프리페치(prefetching)를 사용하는 인기 사이트

  • 구글은 사용자 경험을 향상시키기 위해 이 기능을 이용하는 가장 잘 알려진 웹사이트다.첫 번째 적중 횟수가 원하는 적중일 가능성이 매우 높다고 판단되면 프리페치 가능 링크로 할당된다.
    • 구체적으로 구글은 검색엔진의 성능 향상을 위해 앞서 언급한 기능, 예측 검색 완료, 검색 결과 사전 로딩 등을 사용자 유형으로 활용하는 '구글 인스턴트 페이지'를 2011년 8월 구현했다.[12]
  • 인터넷 익스플로러 11 출시(2013년 10월) 이후 프리페치(prefetching)와 프리로드(preloading)를 활용했다.[6]

이슈와 비판

무분별한 링크 프리페치(prefetching)에 내재된 문제는 "안전한" HTTP 방법의 오용을 포함한다.HTTP GETHEAD 요청은 "안전하다"고 한다. 즉, 이러한 요청 중 하나를 발급하는 사용자 에이전트는 요청이 수신인 서버에서 변경되지 않을 것으로 예상해야 한다.[13]그러나 웹사이트 운영자들은 이러한 제약을 벗어나 이러한 요청을 사용하는 것이 일반적이다.일반 하이퍼링크(대개 GET 요청으로 귀결되는 거의 보편적)는 로그아웃 기능 및 계정 확인을 구현하는 데 주로 사용되며, 예를 들어, 사용자가 계정 생성 양식을 완료하고 자동화된 서비스가 사용자의 주어진 전자우편 주소로 확인 이메일을 보낸다.

마찬가지로, 호스팅 서비스는 웹 프런트 엔드를 제공하여 하나 이상의 파일을 삭제하는 링크를 포함하여 파일을 관리하는 것이 전적으로 가능하다.이러한 유형의 링크가 포함된 페이지를 방문하는 사용자는 (무차별 링크 프리페처를 사용하는 브라우저를 사용하는 경우) 로그아웃되었거나 파일이 삭제된 것을 발견할 수 있다.[14]

또한 링크 프리페치팅의 프라이버시 및 리소스 사용 의미에 대한 많은 비판이 있다.

  • 제3자에게 설정되거나 전송되는 쿠키는 웹 프라이버시를 손상시킨다.
  • 기본/경계선 사용 멀웨어 확산 링크가 미리 설정되어 있다는 이유만으로 0일 동안 제로 클릭 공격 멀웨어 설치
  • 자신이 사용하는 대역폭의 양에 대해 지불하는 사용자와 웹사이트 운영자는 사용자가 실제로 방문하지 않을 수 있는 페이지의 트래픽에 대해 지불하고, 광고주들은 방문하지 않는 사이트의 조회 광고에 대해 지불할 수 있다.
  • 사용자가 볼 수 없었던 페이지 히트를 등록해 브라우저 사용량, 검색엔진 참조자, 페이지 히트 등 웹 통계에 대한 신뢰도가 떨어질 수 있다.
  • 사용자는 더 많은 페이지를 다운로드하거나 요청되지 않은 사이트에서 더 많은 보안 위험에 노출될 수 있다(드라이브 바이 다운로드가 더 발전하고 다양해지면서 추가적으로 복잡해진다).
  • 프리페치(prefetching)가 허가되지 않은 콘텐츠에 접근하는 경우 사용자는 네트워크 또는 조직의 허용 가능한 사용 정책을 위반할 수 있다.

모바일 기기의 경우 또는 대역폭 허용량이 제한된 사용자의 경우 프리페치(prefetching)는 제한된 대역폭에서 불필요하게 많은 비용이 소모될 수 있다.

사전 추출 링크로 지정되지 않은 경우에도 구현에서 사전 추출 링크가 가능하다.

사전 렌더링의 경우, 구글은 부적절한 사용은 앞서 언급한 대역폭 사용 증가, 다른 링크의 로딩 지연, 그리고 약간 오래된 콘텐츠로 이어질 수 있다고 경고한다.[10]

참고 항목

참조

  1. ^ a b "Preload". w3c.github.io. Retrieved 2016-03-19.
  2. ^ a b "Resource Hints". w3c.github.io. Retrieved 2016-03-19.
  3. ^ "Web Linking". RFC 5988. IETF. Retrieved 2016-03-19.
  4. ^ "Resource Hints (Example 6)". Resource Hints: W3C Working Draft. W3C. Retrieved 2016-10-31.
  5. ^ a b c d e f g h i j k l m n o p q "Prebrowsing". Steve Souders. 2013-10-07.
  6. ^ a b c d e f "Getting to the Content You Want, Faster in IE11". IEBlog, Microsoft. 2013-12-04. Archived from the original on 2014-05-12.
  7. ^ "Bug 730101 - Implement prerendering in Firefox". Mozilla. 2014-10-18.
  8. ^ Fisher, Darin; Saksena, Gagan. "Link Prefetching in Mozilla: A Server-Driven Approach" (PDF). Retrieved 2014-05-09.
  9. ^ "Controlling DNS prefetching". Retrieved 2014-05-09.
  10. ^ a b "Web Developer's Guide to Prerendering in Chrome". Retrieved 2014-05-09.
  11. ^ "Internet Explorer 9 Network Performance Improvements". Retrieved 2014-05-09.
  12. ^ "About Google Instant". Retrieved 2014-05-09.
  13. ^ Fielding, Roy; Gettys, Jim; Mogul, Jeffrey; Frystyk, Henrik; Masinter, Larry; Leach, Paul; Berners-Lee, Tim (June 1999). "Safe Methods". Hypertext Transfer Protocol—HTTP/1.1. Network Working Group. IETF. p. 50. sec. 9.1.1. doi:10.17487/RFC2616. RFC 2616. Retrieved 2009-12-16.
  14. ^ various (2009). "Mouseover Prefetch?". Gervase Markham, MozillaZine. Archived from the original on 2009-05-31. Retrieved 2009-12-16.

외부 링크