2014-08-29 3 views
0

는이 슬라이드 쇼를 보라 :IE11에서 리소스 프리 페치가 작동하지 않는 이유는 무엇입니까?

http://www.jungledragon.com/all/slideshow/promoted

그것은 하나 개의 큰 이미지를로드하고, 바닥에 당신이 엄지 손가락 아이콘 버튼을 전환 할 때 볼 수있는 9 개 썸네일 이미지가있다. 나는 각각의 엄지 손가락의 큰 버전에 대한 링크 프리 페치 문을 포함하고있어이 슬라이드 쇼를 최대 속도에서 테스트로

: 당신은 페이지의 소스 위의를 찾을 수 있습니다

<link rel="prefetch" [large image url 1 here]" /> 
    <link rel="prefetch" [large image url 2 here]" /> 
    <link rel="prefetch" [large image url 3 here]" /> 
    <link rel="prefetch" [large image url 4 here]" /> 
    <link rel="prefetch" [large image url 5 here]" /> 
    <link rel="prefetch" [large image url 6 here]" /> 
    <link rel="prefetch" [large image url 7 here]" /> 
    <link rel="prefetch" [large image url 8 here]" /> 
    <link rel="prefetch" [large image url 9 here]" /> 

. 사용자가 슬라이드 쇼를 탐색 할 때 큰 이미지가 종종 즉시 표시 될 수 있도록 현재 배치 (9 개 이미지)의 모든 큰 버전이 사전로드된다는 아이디어가 있습니다.

이 기능을 구현 한 후에도 효과를 테스트 해 보았습니다. 테스트 명령은 간단하다 : 몇 초 동안

  • 방문 슬라이드 쇼 링크
  • 기다립니다 (미리로드 할 수 있도록) 다음 이미지에
  • 이동 몇 번. 이 기능이 거의 즉시 작동하는 경우 프리 페칭이 성공적이었습니다. 이미지로드에 2-3 초가 걸리면 실패했음을 의미합니다.

또는 브라우저의 관리자 윈도우 인 네트워크 탭을 열고 캐시에서 검색을 미리로드 할 수도 있습니다. 이 테스트를 여러 번 수행 할 때마다 매번 캐시를 지워야합니다.

크롬은 크롬에서

결과는 탁월 발생합니다. 프리 페치 힌트는 적극적으로 수집됩니다. 그것은 얻는만큼 좋다.

파이어 폭스는 덜 적극적으로 더 천천히

파이어 폭스 프리 페치 결과. 그래도 적어도 프리 페치는 작동합니다.

IE11은 IE11 자원 프리 페치를 지원한다고 주장하지만 제로 효과가

결과. Windows 8.1/IE11에서는 이미지가 즉시로드되지 않으며 슬라이드 쇼를 탐색하기 전에 오랜 시간 기다리지 않아도 아무 것도 보이지 않습니다. IE의 dev 도구에서 네트워크 탭에 프리 페치 작업이 없다는 것을 확인할 수 있습니다.

나중에 프리 페치가 dev 도구를 열어도 작동하지 않는다는 것을 알았지 만, 닫히더라도 프리 페칭은 일어나지 않습니다. 응답 시간에서 볼 수 있습니다.

Chrome과 Firefox에서는 작동하지만 IE11에서는 작동하지 않는 이유는 무엇입니까? 잘 지원되어야하지만 제대로 작동하지 않습니다. 이는 HTTP가 아닌 HTTP 모두의 교차 도메인 가져 오기이지만 크로스 도메인 프리 페칭은 사양에 따라 작동해야합니다.

+0

Telerik의 우수한 Fiddler 도구를 사용하여 개발자 도구의 "네트워크"탭을 사용하지 않고도 다운로드중인 이미지를 볼 수 있습니다. http://www.telerik.com/fiddler – pwdst

+0

MSDN에서 "IE11은 최대 10 개의 프리 페치 요청을 지원합니다. 추가 요청은 무시됩니다." http://msdn.microsoft.com/en-gb/library/ie/dn265039(v=vs.85).aspx - 모든 요청 (스타일 시트, 스크립트 등)이 이미지 이전에 만들어지고 있습니까? – pwdst

+0

@pwdst 예 (프리 페치 요청은 아님). – Ferdy

답변

1

제공하신 링크를 살펴본 결과, 링크 요소가 비정상적으로 (아마도) 잘못 배치 된 것으로 보입니다.

Microsoft는

상태 - 링크 요소 만 head 태그 내에서 사용할 수 있습니다. 자신의 MSDN documentation

.

Mozilla Developer Network 상태 -

허용 부모 요소 메타 데이터 요소를 수용 상관 소자

이 상기 메타 콘텐츠 -

을 정의 official specification로 연산하고

메타 데이터 콘텐츠는 나머지 콘텐츠의 프레젠테이션이나 동작을 설정하거나 다른 문서와의 관계를 설정하거나 다른 "대역 외"정보를 전달하는 콘텐츠입니다.

기본 링크 메타 NOSCRIPT 스크립트 스타일 템플릿 제목

페이지 헤드는 몸은 절편 동의 및 콘텐츠 흐름 할 수있는 반면, 메타 데이터의 내용을 포함 할 수있다.

+0

감사합니다. 구현하고 테스트 했으므로 실제로 작동합니다. – Ferdy

+0

이와 같은 것은 항상 HEAD 요소에 있어야합니다. dns-prefetch는 또 다른 예입니다. 이러한 백그라운드 작업을 가능한 한 빨리 실행하기를 원합니다. 또한 이러한 요청이 해당 도메인의 다른 요청을 차단하고 있는지 고려해야합니다. 브라우저는 동일한 도메인에 한 번에 (일반적으로) 6 개의 연결을 열 것임을 기억하십시오. 프리 페치가 그쪽으로 가는지 아닌지 나는 모른다. –

+0

@ChrisLove 프리 페치 (Prefetch) 및 사전 렌더링 (Pre-render)은 브라우저가 유휴 상태 인 ** 시간을 이용하여 사용자가 가까운 미래에 요구할 가능성이 높은 (특히 다음 요청) 리소스를 다운로드합니다. https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ를 참조하십시오. dns-prefetch의 경우 MDN은이 내용을 콘텐츠 다운로드와 "병행"으로 설명하지만 웹 서버가 아닌 사용자의 DNS 서버가됩니다. DNS 조회에 대한 트래픽 양은 실제로 매우 적습니다. 사전 가져 오기의 이점은 조회에 대한 상대적으로 높은 대기 시간을 완화하는 것입니다. – pwdst

0

IE11/Edge와 Visual Studio (443 또는 80 이외의 다른 포트 사용)를 통해 사이트를 실행하는 경우 prerender이 작동하지 않는다고 알리고 싶습니다. Chrome은 정상적으로 작동했으며 ie/edge가 작동하지 않는 이유를 확인하려고했습니다. 내가 생각할 수있는 유일한 것은 항구입니다. 그래서 나는 우리 웹 서버에 게시하고 ie/edge가 작동하기 시작했습니다. 나는 똑같은 것이 prefetch을 위해 사실 일 것이라고 추측 하겠지만 나는 그것을 시도하지 않았다.