2010-01-11 3 views
2

나는 Dojo 툴킷을 사용하기 시작했으며 Dijits와 같은 유용한 기능을 가지고 있으며 유용하지만 시간이 많이 걸린다.javascript (Dojo)로드를 향상시키는 방법이 있습니까?

저는 인터넷 연결이 좋지만 연결 속도가 느린 사람은 느린 페이지로드가 발생합니다.

무거운 대 프레임 워크에 대한 질문입니다. 위젯을 많이 사용하는 경우 페이지로드 시간을 줄이기위한 몇 가지 기술은 무엇입니까?

+1

맞춤 레이어와 빌드 시스템을 사용하고 있습니까? – prodigitalson

+0

아니, 아니지만 propably해야한다 ... 내가 그것에 대해 탐구거야. – marko

답변

6

Dojo에는로드 시간이 크게 향상되는 빌드 시스템이 있습니다. 도장 또는 온라인 문서 & 중 하나를 살펴보고 계층화 된 빌드를 살펴보십시오. 빌드를 수행하려면 빌드 도구가 포함 된 "소스"(또는 "풀") 버전의 dojo가 있어야합니다.이 도구는 'util'디렉토리의 존재 여부에 따라 알 수 있습니다 dojo, dojit, dojox와 동일한 레벨에 있음). 정식 버전이 없다면 dojo 사이트 &으로 가서 다운로드 영역을 탐구하십시오.

어쨌든 올바른 버전이 있다면 기본적으로 "빌드 프로파일"파일 (또는 파일 ... 일명 계층화 된 빌드)을 만들어야합니다.이 파일은 본질적으로 dojo.requires의 목록입니다 당신의 HTML에있다. 빌드 시스템은 모든 dijits, dojox stuff 등의 모든 자바 스크립트 코드를 함께 "계층화 된 빌드"(파일)로 잼하고 코드 축소 작업을 수행하는 shrinksafe를 실행합니다 (공백을 제거하고 이름을 줄입니다. , 등). 또한 CSS 파일에이 작업 중 일부를 수행합니다. 훨씬 더 작게 만드는 것 외에도, 모든 js 코드 (또는 하나 이상의 레이어를 사용하는 경우 몇 개의 파일이 있지만 단일 레이어로 충분할 때 대부분)에 대해 하나의 파일 만 얻을 수 있습니다.

로드 시간이 10 분의 1 이상으로 향상됩니다. 프로필의 형식과 빌드 명령 자체를 내려 받기 위해 약간의 독서가 필요할 수도 있지만 실제로 그렇게 어렵지는 않습니다. 빌드 파일을 만든 후에는 "mystuff"과 같이 명백한 이름을 지정하고 "mystuff"파일을 작성하십시오. 빌드 할 때 생성되는 새 빌드 디렉토리에 있어야하며 그 아래에 &과 사귀어 야합니다. dojo 디렉토리의 dojo.js 파일). 빌드 된 파일에서 요구하면 모든 dojo.require를 평소대로 만족시킬 수 있습니다 (빌드 할 프로필에 모두 나열되어 있다고 가정하면 매우 빠르게로드됩니다). (하지만 아마도 조금 불완전한) 다음 http://www.dojotoolkit.org/book/dojo-book-0-9/part-4-meta-dojo/package-system-and-custom-builds

업데이트 된 문서입니다 : 여기

은 대부분 아직 진정한 보유하고있는 구형 구축 문서에 대한 링크의 docs.dojocampus.org/build/index

그것은 실제보다 더 열심히 읽습니다 ... profiles 디렉토리의 layer.profile 파일을 시작점으로 사용하십시오. 그냥 & 두 개를 넣은 다음 빌드 디렉토리 (dojo, dijit 등과 같은 수준이어야 함)가 생성되었는지 확인한 후 전체 도장 시스템을 갖습니다 (모두 축소 됨). & 빌드를 참조하십시오. 뿐만 아니라 귀하의 내장 (계층화 된) 물건. 훨씬 더 빨리. 딜런 타이난

3

그리 크지는 않습니다 (28k gzipped). 그럼에도 Dojo의 Google's hosted version을 사용할 수 있습니다. 많은 사용자가 이미 캐시에 저장합니다.

1

당신이 빌드 파일을 작성하면

는 그것을 "mystuff에"와 같은 뭔가를 분명 이름을 지정하고 당신은 도장 할 수 있습니다.빌드 할 때 생성되는 새 빌드 디렉토리에있는 "mystuff"파일이 필요하고, 밑에는 &이 dojo 디렉토리의 dojo.js 파일로 수다를 떨고 있어야합니다. 당신이 평소 모든 dojo.require의의를 만족시킬 것이다 당신의 내장 파일에서 요구하는 (당신이 그들 빌드로 프로필에있는 모든이 가정) 사물이 매우 빠른

약간의 보정을로드 - 당신이 돈 ' t dojo.require 그 파일, 당신은 일반적인 스크립트 태그에서 그것을 참조하십시오.

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

디렉토리 레이아웃에 대해 "mystuff.js"라는 내장 파일을 내 패키지와 동일한 디렉토리에 넣습니다. 따라서 dojo, dojox 및 dijit과 동일한 수준에서 "mystuff"라는 디렉토리가 있고 그 안에 MyClass1.js 및 MyClass2.js가 있습니다. 그런 다음 build 용 profile.js 파일의 일부분은 다음과 같습니다.

layers:[ 
{ 
name: "../mystuff/mystuff.js", 
dependencies: [ 
    "mystuff.MyClass1", 
    "mystuff.MyClass2" 
    ] 
},... 
0

이 파일은 오래된 파일이라는 것을 알고 있습니다. 그러나 나는 이것을 읽었을지도 모르는 나와 같은 다른 사용자의 이익을 위해이 답변을 게시하고있다.

아파치에서 제공하는 경우 다른 요인도 있습니다. 이러한 설정은 큰 차이를 만들 수 있습니다 - MaxClientsMaxRequestsPerChild. 파일을 제공하는 서버/컴퓨터에서 사용할 수있는 리소스를 기반으로 조정해야합니다.

이 변경 사항은 저에게 효과적입니다.

Google CDN을 사용하는 것도 좋은 방법이지만 일부 상황에서는 실용적이지 않을 수도 있습니다.

맞춤 빌드는 다른 답변에서도 지적한 효과가 있습니다.

관련 문제