2010-03-02 4 views
15

우리 서버에서 꽤 많은 데이터를받는 gwt-client가 있습니다. 논리적으로, 나는 불필요한 요청으로부터 서버를 보호하면서, 클라이언트 측에서 데이터를 캐시하고 싶다.GWT의 클라이언트 측 캐싱

현재로서는 데이터 캐싱을 처리하기 위해 제 모델을 조정 해 보았습니다. 또한 팀의 여러 개발자가 프로젝트를 복제하여 자체 "캐싱"기능을 개발하므로 문제가됩니다.

캐싱이 처리되는 방식에 대한 모델을 남겨 두면서 모든 캐싱을 처리하는 "단일 입력 지점"을 구현하는 방법에 대해 생각하고 있습니다.

GWT에서 클라이언트 쪽 캐싱에 대한 경험이있는 사람이 있습니까? 구현할 수있는 표준 접근법이 있습니까?

답변

10

gwt-presenterCachingDispatchAsync을 살펴 보시기 바랍니다. 원격 명령을 실행하기위한 단일 입력 지점을 제공하므로 캐싱을위한 완벽한 기회를 제공합니다.

recent blog post은 가능한 접근법의 개요입니다.

6

명령 패턴을 살펴볼 수도 있습니다. 레이 라이언 (Ray Ryan)은 Google IO에서 GWT에 대한 우수 사례에 대해 이야기를 나누었습니다. 여기에 성적표가 있습니다. http://extgwt-mvp4g-gae.blogspot.com/2009/10/gwt-app-architecture-best-practices.html

그는 서비스 프록시에서 처리 및 응답/결과 객체를 사용하여 명령 패턴을 사용하도록 제안합니다. 이것들은 클라이언트에서 수행하고자하는 캐싱을 캡슐화하는 훌륭한 객체입니다.

다음은 발췌 내용입니다. "캐싱 정책을 구현하는 데 좋은 통화 단위가 있습니다. 동일한 GET 요청을 두 번 볼 때마다 지난 번 응답을 캐싱하여 곧바로 서버 측 출장으로 걱정하지 않아도됩니다. "

상당히 큰 프로젝트에서 나는 다른 방향을 취했다. 대기열에있는 서비스 호출의 응답을 기다리고있는 각 AsyncCallback에 대한 참조를 기본적으로 보유하고있는 DtoCache 객체를 개발했습니다. DtoCache가 서버에서 객체를 수신하면 DtoCache 내부에 캐시됩니다. 캐싱 된 결과는 이후 동일한 서비스 호출에 대해 대기열에 새로 생성 된 AsyncCallbacks로 반환되었습니다.

1

이미 완벽하게 구축 된 CRUD 작업을위한 매우 정교한 캐싱 엔진의 경우 Smart GWT를 고려하십시오.

http://www.smartclient.com/smartgwt/showcase/#grid_adaptive_filter_featured_category

이 동작은 당신이 당신을 넣어해야하는 경우의 ResultSet 클래스를 통해 노출되는 :이 예는 (캐시이 허용하는 경우) 대규모 데이터 세트에 대한 적응 여전히 지원하면서 페이징을 클라이언트 측 작업을 할 수있는 능력을 보여줍니다 그 위에 자신의 위젯 :

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/ResultSet.html

0

내가 Itemscript 생각은 종류의 깔끔한했다. 클라이언트 (GWT)와 서버 모두에서 작동하는 RESTful JSON 데이터베이스입니다.

그것을 확인하십시오!

-JP

캐싱의 두 가지 수준이 있습니다
1

:

  • 캐싱 하나 개의 브라우저 세션 동안.
  • 브라우저 간 세션 캐시 (예 : 브라우저를 다시 시작한 후 캐시 된 데이터를 사용할 수 있어야 함).

캐시 무엇 : 응용 프로그램에 따라, 당신은

    특정 사용자
  • 공공 정적에 대한
  • 금지 된 데이터 (또는 반 정적, 예를 들면 거의 변화 없음) 데이터
  • 를 캐시 할 수 있습니다

는 캐시 방법 :

  • 을 처음 캐싱 수준에서 우리는 답변에 제안 된대로 GWT 코드를 사용하거나 자신의 글을 쓸 수 있습니다.
  • 두 번째로는 브라우저 캐싱 기능을 사용해야합니다. 표준 접근 방식은 html 내에 데이터를 저장하는 것입니다 (예 : 정적 HTML 파일 또는 jsp/servlet에 의해 생성 된 동적). 그런 다음 응용 프로그램에서 http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsOverlay.html 기술을 사용하여 데이터를 가져옵니다.