2012-01-12 1 views
9

이전 웹 응용 프로그램에서 사용자가 한 페이지 (페이지 새로 고침 없음, 새 div 만)에서 다른 페이지로 전환 할 때 나중에 사용할 수 있도록 한 div 만 숨기고 만든 + 새로운 것을 보여 주었다. 사용자가 주소 관리에서 이벤트 관리로 돌아 왔을 때, 현재 div를 숨기고 이미 사용 된 div 만 다시 표시해야했습니다. 물론 이것은 메모리가 필요하지만 더 빠릅니다.자바 대 웹 응용 프로그램의 메모리 대 속도

내 새로운 웹 응용 프로그램에서 Backbone.js, Require.js 및 jQuery를 사용합니다. 내 모든 모듈은 AMD (jquery 1.7.1, backbone.js 0.5.3-optamd3, ...)입니다.

Derick Bailey의 흥미로운 블로그 (http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/)를 읽은 후 사용자가 새로운 "페이지"로 전환하기 전에 내 div를 정리 한 다음 사용자가 다시 돌아 오는 경우 다시 작성합니다.

마찬가지로, requirejs amd 모듈과 관련하여 나는 메모리 전략보다 속도가 빠르곤했다. 내 웹 앱 탐색의 핵심은 내 유일한 라우터 객체에있다. 사용자가 처음으로 "페이지"/ 기능을 선택하면 require 명령을 사용하여 amd 모듈 (backbone.js 뷰 객체)과 모든 종속성을로드하고이 결과 뷰 객체를 모델 객체와 함께 저장합니다)를 사용하여 나중에 라우터 객체의 배열에 사용할 수 있습니다. 사용자가 돌아 오면 저장된 뷰 객체를 가져 와서 뷰를 다시 렌더링합니다.

필자는이 동작을 항상 (캐시에서) 모듈을 다시로드하도록 전환 할 것입니다.하지만 확실하지 않습니다. 가장 좋은 방법을 이동하기 위해

, 내가 더 나은 이해를 얻기 위해 원하는이 개 질문을 물어보고 싶은 :

  1. 내가 5 개 AMD 모듈이 있습니다. 사용자가 기능을 필요로 할 때 모듈을로드하고 실행하여 결과적으로 backbone.js 뷰 객체를 얻습니다.이 객체는 라우터 객체의 배열에 저장됩니다. 모든 AMD 모듈에는 Backbone.js (AMD 버전)가 종속되어 있습니다. 사용자가 5 개의 "페이지"를 모두 방문하고 모든 5 개의 뷰 객체가 배열에 저장되면 모든 backbone.js 종속성이 캐시에서 페치되고 새롭게 실행되므로 브라우저 메모리에 backbone.js 사본 5 개가 있습니까? 가비지 컬렉터에서 제거 했습니까?
  2. 다른 웹 응용 프로그램 개발자가 메모리 전략보다이 속도를 어떻게 생각합니까?

은 (http://stackoverflow.com/questions/7866971/how-does-amd-specifically-requirejs-handle-dependancies-across-multiple-module) I에 유래에 비슷한 질문을 발견 오늘을 계속했다. 대답은 : "위의 두 모듈 모두 은 동일한 모듈 값 ...을 가져올 것입니다."

그래서 나중에로드 된 + 실행 된 amd 모듈의 결과를 나중에 사용하기 위해 저장하는 것은 그리 좋지 않은 것 같습니다.

볼프강

답변

2

캐시의 모든 것을 (즉, 한 번 이상 사용할 수 있습니다). (Canvas/ImageData에 쓰십시오). 메모리에 프레임 워크 복사본이 하나만 있어야합니다. 모든 AMD가 단일 소스 백본을 사용하도록하려면 다시 작성하십시오.

메모리 입니다. 브라우저 캐싱을위한

  • 통근 당신의 js 파일 :

    당신은 더 나은 속도를합니다.

  • 사용
  • 는 사용자
  • 서버를 최소화에서 대부분의 계산을 수행하고 요청이 흐름을 간소화 로컬 스토리지