2010-06-15 3 views
4

Mobile Safari의 캐시 매니페스트 파일을 사용하여 오프라인 모드에서 iPod Touch (버전 3.1.3)에서 실행되는 다중 페이지 데이터 입력 응용 프로그램을 저장하고 있습니다. 응용 프로그램은 persistence.js ORM을 통해 클라이언트 쪽 데이터베이스에 씁니다. 이 모든 것이 잘 작동합니다.모바일 Safari 응용 프로그램 캐시 버그?

그러나 사파리는 페이지가 캐시 된 것을 잊어 버리는 것처럼 보이는 경우가 종종 있습니다. 이 경우 Wi-Fi가 꺼진 상태로 캐시되지 않은 웹 사이트를 방문하려고 할 때 나타나는 것과 같은 "페이지를 열 수 없음"경고가 나타납니다. 이 문제를 해결할 수있는 유일한 방법은 무선 신호에 다시 연결하여 온라인 상태에서 사이트를 방문하는 것인데 이는 캐시를 곧바로 설정하는 것 같습니다. 이것은 사무실에있을 때 쉽게 할 수 있지만 현장에서 그렇게 쉽게 할 수는 없습니다.

캐시 된 리소스 외부에서 참조를 시도하지 않고 연결이 끊긴 상태에서 전체 사이트를 실행하여 응용 프로그램이 캐싱 된 것을 확인했습니다. 캐시의 유효성을 망쳐 놓은 OS 버그가있는 것 같습니다. 나는 반드시 문제에 대한 해결책을 찾고있는 것은 아니지만 다른 사람들이이 문제를 겪었다는 것을 확인하는 것입니다.

+0

저는 이처럼 앱을 디자인하려고합니다. 그리고이 분야에서 우리 사용자에게 일어난 일에 대한 생각은 좋지 않습니다. –

답변

2

캐시 매니페스트 및 많은 문제 해결을 사용하여 전체 응용 프로그램을 안정적으로 캐시 할 수 있습니다. 이것은 몇 가지 별도의 파일 리소스가있는 단일 페이지 앱이라는 점에 유의하십시오.

: 더 향상으로

, 나는

window.applicationCache 상태에 따라 DOM을 수정하려고 한 것은

업데이트에 대한 사용자, 즉 알려 업데이트를 적용하려면 여기를 누르십시오.

가능하다면 캐시를 바꿀 수 있습니다.

window.applicationCache.swapCache();

그러면 업데이트 된 캐시를 스왑하고 페이지를 다시 시작하여 효율적인 업데이트 메커니즘을 제공 할 수 있습니다.

잠재적으로 애플 스토어의 앱보다 훨씬 간소화되었습니다.

나는 애플이이 이유로 애플 리케이션 캐시 API가 웹 애플 리케이션을 방해하고 있다고 생각한다. 말하자면, 모바일 장치에서 "html5"API에 대한 지원 수준이 애플의 사파리 중에서 가장 강력하다고 생각합니다.

다음은 내가 지금까지 주목 한 몇 가지 문제입니다. 특별한 순서는 없습니다. 이 버그는 포괄적 인 버그 목록이 아닙니다.

'updateready'이벤트가 발생하지 않습니다. 이 경고 라인은 실행되지 않습니다.

window.applicationCache.addEventListener('updateready', function(e) { 
    alert('updateready event status=' + window.applicationCache.status); 
}, false); 

수동으로 업데이트를 확인할 수 없습니다.다음 코드에서는 예외가 발생합니다.

try{ 
     window.applicationCache.update(); 
    }catch (err){ 
     alert('exception:\n' + err); 
    } 

캐시 상태와의 상호 작용이 시작되면 캐싱이 작동을 멈추는 것처럼 보입니다. 버그는 매우 어리 석다. 하나의 이슈를 격리하는 &의 고정은 많은 시간을 필요로 할 수 있습니다. 특히이 코드가 다른 브라우저 (크롬)에서 완벽하게 실행되기 때문에 특히 그렇습니다.

다음은 좋은 점입니다. iCloud는 홈 화면에 앱을 고정하면 iCloud가 홈 화면에서 앱을 처음 실행 한 후에 리소스를 "백업"하고 복원합니다. 이 문제를 피하기 위해 때때로 파일의 이름을 바꾸어야 할 수도 있습니다. 나는 사과

이 응용 프로그램을 열고 모든 캐시를

을 삭제 홈 화면

에서 고정 된 웹 응용 프로그램을 삭제하는 내 응용 프로그램 서버

에서 완전히 그들을 제거하여 사용되지 않는 구성 요소의 개별 백업을 만드는 것을 입증 사파리

을의 URL을 확인하는 집에 자사의 최신 버전

47,는 확인이 고정 된 응용 프로그램 최신 버전

가까운 그것을

실행 다시 - 더 이상 서버에 이전에 그것의 뒷면.

마지막으로 휴대 전화가 비행기 모드 인 상태에서 고정 된 앱을 실행하면 iCloud에서 오래된 파일을 복원 할 수 없습니다. 이것은 그것이 공중에서 오는 것을 증명합니다.