2

좋아, 오프라인 기능이 필요한 모바일 응용 프로그램 용 PoC를 구축하고 있으며 응용 프로그램을 올바르게 디자인하고 있는지 여부와 캐시 매니페스트에서 어떤 동작을 얻을지에 대한 몇 가지 질문이 있습니다.ASP.NET MVC 4에서 HTML5 오프라인 매니페스트/기능이 어떻게 작동합니까?

이 질문은 매니페스트의 캐시 섹션과 네트워크 섹션 모두에서 컨트롤러 작업의 URL을 포함하는 것에 관한 것입니다.

나는 이것에 관해 온라인으로 충돌 정보를 읽었다 고 생각합니다. 몇몇 사이트에서는 네트워크 섹션의 와일드 카드를 포함하여 브라우저가 온라인 상태 일 때 서버에서 모든 것을 검색하려고 시도하고 인터넷에 연결되어 있지 않은 경우 캐시 된 것을 사용합니다.

그러나, 오늘 아침 나는 Dive into HTML5 : Let's take this offline에서 다음을 읽어

라인은 네트워크 표시 : "온라인 화이트리스트"섹션의 시작입니다. 이 섹션의 리소스는 캐시되지 않으며 오프라인에서 을 사용할 수 없습니다. 오프라인 상태에서로드하는 동안 오류가 발생합니다.

정보가 맞습니까? 캐시 (CACHE) 섹션과 네트워크 (Network) 섹션 모두에서 컨트롤러 작업에 대한 URL을 추가하면 응용 프로그램이 어떻게 동작합니까?

나는 매우 간단하고 작은의 PoC 지금까지 일하고 있고, 이것이 내가이 질문에 대한 관찰 한 것입니다 :

  1. 난 그냥 4 개 난수를 생성하고 그들을 설정하는 컨트롤러 액션을 ViewBag 및 View는이를 UL에 표시합니다.

  2. 출력 캐싱을 전혀 사용하지 않습니다. 유일한 캐싱은 매니페스트 파일에서 제공됩니다.

  3. 내 Layout.cshtml의 html 태그에 manifest 속성을 추가하기 전에 View를 요청할 때마다 매번 다른 난수가 생기고 컨트롤러 액션에 설정된 중단 점이 발생합니다.

  4. 매니페스트 특성을 추가 한 후 처음으로 URL /보기를 요청하면 컨트롤러의 중단 점은 3 번 (이전의 1 번과 반대)에 도달합니다. 이것은 이미 이상하고 나는 그것에 대해 별도의 질문을 게시 할 것입니다, 나는 단지 여기에 참조 용으로 작성했습니다.

  5. 매니페스트와 리소스가 캐시 된 후 (Chrome 개발자 도구의 콘솔 창에서 확인),보기/URL을 요청할 때마다 캐시 된 버전이 표시되고 중단 점이 다시 표시되지 않습니다.

이 문제는 나를 무시하거나 네트워크 섹션의 모든 정보를 무시 캐시 섹션에서 무엇이든 믿을 수 있지만, 내가 말했듯이 난 때문에 (내가 여기 부탁 해요 이유)입니다 이 작업에 익숙하지 않고 이것이 작동해야하는 방법인지 아니면 뭔가를 놓치고 있는지 또는 올바르게 사용하지 않는지 확실하지 않습니다.

아무 도움도 크게 환영합니다.

여기 캐시의 관련 섹션이 있습니다.manifest :

CACHE MANIFEST 
#V1.0 
CACHE: 
/
/Content/Site.css 
/Content/themes/base/jquery-ui.css 

NETWORK: 
* 
/

FALLBACK: 
+0

정말 좋은 질문과 대답입니다. 나는이 모든 것의 POC를 내일 할 예정이다. 온라인 모드가 ASP.NET MVC 아키텍처와 잘 작동하기를 바랍니다. –

답변

3

결국, html5 appcache 또는 manifest 캐싱은 예상했던 것보다 다르게 작동합니다. 여기

은 멋지게 설명 whatwg.org에서 인용입니다 :

Offline Web Applications

응용 프로그램 논리는 응용 프로그램 및 사용자 데이터를 분리 경우 응용 프로그램 캐시 기능은 함께 잘 작동 매니페스트에 나열되고 응용 프로그램 캐시의 에 저장되는 논리 (마크 업, 스크립트, 스타일 시트, 이미지 등) 및 응용 프로그램에 대한 유한 정적 수의 정적 HTML 페이지 (응용 프로그램 및 사용자 데이터는에 저장 됨)웹 저장소 또는 클라이언트 측 인덱싱 된 데이터베이스, 웹 소켓, XMLHttpRequest, 서버 전송 이벤트 또는 유사한 다른 메커니즘을 사용하여 동적 업데이트 됨.

그러나 레거시 응용 프로그램은 사용자의 데이터와 논리가 HTML에서 함께 혼합되어 각 작업이 이고 서버의 새로운 HTML 페이지가 만들어 지도록 설계되는 경향이 있습니다.

혼합 컨텐츠 모델은 응용 프로그램 캐시 기능이 잘 작동하지 않습니다 : 콘텐츠가 캐시되어 있기 때문에, 항상 캐시가 업데이트 이었다 이전 시간에서 오래된 데이터를 보는 사용자 될 것입니다.

분리 모델처럼 빠르게 레거시 모델을 작동시키는 방법은 없지만 prefer-online 응용 프로그램 캐시 모드를 사용하여 오프라인 사용을 위해 최소한 개조 할 수 있습니다. 이렇게하려면 오프라인으로 작업 할 HTML 페이지에서 사용하는 모든 정적 리소스를 응용 프로그램 캐시 매니페스트에 나열하고 매니페스트 특성을 사용하여 HTML 파일에서 나타나는 을 선택하고 에 다음 줄을 추가하십시오 매니페스트의 바닥 : 그것은 밝혀

SETTINGS: 
prefer-online 
NETWORK: 
* 

때문에, 응용 프로그램 캐시는 서버에서 렌더링되는 동적 정보 페이지에 적합하지 않습니다. whatwg.org는 이러한 유형의 앱을 '유산'이라고 부릅니다.

응용 프로그램 캐시가 자연스럽게 적합하려면 html 페이지에 디스플레이 및 일반 로직 만 있고 ajax 요청을 통해 동적 정보를 검색해야합니다.

희망이 도움이됩니다.