2011-08-14 1 views
8

정말 일을 속도를최적화입니까?

<script type="text/javascript"> 
    <?php echo file_get_contents('jquery.js'); ?> 
</script> 

<script type="text/javascript" src="jquery.js"></script> 

에서 진행합니까?

나는 PHP가 네트워크를 통해 가지 않기 때문에 PHP가 클라이언트의 브라우저가 파일에 대한 전체 요청을 만들 수있는 것보다 빠르게 파일의 내용을 가져 와서 포함 할 수 있기 때문에 그럴 것이라고 생각합니다.

전통적인 방법이 캐시 될 수 있다는 주된 차이점은 무엇입니까?

+2

그 _will_ 캐싱에 영향을 미칩니다. – GWW

+2

@GWW는 "may"을 "will"로 대체합니다. :) – nickf

+1

@nickf : Fixed;) – GWW

답변

11

그것은 빠르게 페이지로드를 할 수 있지만 모든 후속로드에 느린많이있을 것입니다. 첫 번째 예에서 클라이언트 브라우저는 결과를 캐시합니다. 두 번째로는 불가능합니다.

2

두 경우 모두 브라우저로 바이트를 전송해야합니다. 유일한 차이점은 후자의 경우 HTTP 요청을 저장한다는 것입니다. 또한 CDATA으로 자바 스크립트를 이스케이프 처리하거나 htmlspecialchars을 사용하여 이스케이프 처리해야합니다.

HTML 페이지에 JS 라이브러리를 포함하면 브라우저에서 캐시 할 수 없습니다. 일반적으로 JS는 브라우저가 캐시 할 수 있고 후속 요청에서 가져올 필요가 없으므로 JS를 일반 HTML 코드와 별도로 유지하는 것이 좋습니다.

페이지를 짧게 만들려면 사용자가 페이지를 한 번만 호출하고 다른 페이지에서는 jquery를 사용하지 않는 경우에만 작동하는 최적화가 필요합니다.


다른 방법으로는 google apis에서 jQuery를 사용할 수 있습니다 - 그들은 어쨌든 브라우저의 캐시에 종종 효과와 함께, 그래서 전혀 LIB를 전송 할 필요가 없다.

+1

HTML 4.01에서 요소 유형'SCRIPT'는 이미 내용 유형 CDATA를 선언했습니다. –

+1

... 그리고'htmlspecialchars'는'if (a

+0

페이지가 XHTML 일 것으로 기대하고 있었고 XHTML을 사용하면 페이지에서 벗어나야합니다. – cweiske

0

얼마나 많은 파일이 동일한 파일을 사용하는지에 따라 다릅니다. 그러나 대부분의 상황에서는 코드의 첫 번째 부분보다 느릴 수 있습니다. 대부분 jquery.js을 캐시 할 수 있기 때문입니다.

4

고객의 삶에서 단 하나의 웹 사이트를 제공하는 경우에는 2 개가 아닌 하나의 HTTP 요청 만 있기 때문에 그렇습니다.

동일한 자바 스크립트 소스 파일에 모두 링크되는 여러 사이트를 제공하려는 경우이 모든 중복 데이터를 복제하고 클라이언트에게 파일을 캐시 할 수있는 기회를 제공하지 않습니다.

0

예, 처음에는 페이지를 제공하는 데 사용되는 HTTP 요청 수에 관한 성능 최적화가됩니다. 그러나 처음 다운로드 한 후 jquery.js이 브라우저에 캐시되므로 페이지로드가 페이지로드 당 조금 더 커집니다 .

0

페이지가 정적 인 경우 작동합니다.
하지만 jquery가 변경되지 않지만 계속 포함되어있는 동안 정적 인 브라우저는 페이지를 다운로드하지 않습니다. src="jquery.js"을 사용하고 페이지가 변경되면 브라우저는 캐시에서 jquery를로드하고 다시 다운로드하지 않으므로 src="jquery.js"을 사용하면 실제로 더 빠릅니다.

2

이렇게 한 페이지에 있습니다.

같은 라이브러리 (jquery.js는 동일한 URL에서 다운로드)를 사용하는 모든 후속 페이지는 외부 파일에 대한 참조를 포함하면 예를 들어 추가 연결로 다운로드해야하기 때문에 문제가됩니다. HTTP 1.1 및 파이프 라이닝). 그러나 웹 서버가 유용한 헤더 (Expires : 장래에 머지 않아)를 브라우저에 제공하면 브라우저는 다운로드를 캐시하고 "최적화"를 사용하면 모든 단일 컨텐츠 페이지.

또한 같은 페이지를 참조하십시오이 하나 http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

2

첫 번째는 브라우저가 캐시 할 수 있기 때문에 더 나은 (여기 키워드가 그 먼 미래의 만료 날짜와 관련하여 "회전 속도를 올린다"입니다) 스크립트. 두 번째 버전에서는 스크립트가 변경되지 않아도 페이지를로드 할 때마다 스크립트를 다시 다운로드해야합니다.

두 번째 버전은 브라우저에서 캐시 할 수없는 스크립트를 개선 한 유일한 시간입니다.