2011-09-26 6 views
1

오프라인 모드에서도 작동하는 HTML5 애플리케이션을 만들었습니다. HTML 요소에는 매니페스트 특성이 포함되며 매니페스트에는 응용 프로그램을 오프라인으로 사용할 수 있도록 필요한 모든 파일이 포함됩니다. 우리는 javascript 파일을 자동화 된 방법으로 축소하는 방법을 찾으려고 노력하고 있지만 축소 된 후에 매니페스트 파일을 수동으로 편집 할 필요없이 작업 매니페스트 파일을 가지고 있습니다. 주로 축소 된 자바 스크립트 파일로 작업 할 때 파일 이름 또는 쿼리 문자열 변수의 버전 번호와 같은 것을 사용하여 새 버전의 자바 스크립트 파일이로드되는지 확인하는 것이 가장 좋지만 매니페스트와 함께 사용할 때는 잘 작동하지 않습니다 파일을 변경하는 querystring 변수 또는 다른 파일 이름을 지원하지 않습니다.자바 스크립트 확장 및 HTML5 매니페스트

우리는 AjaxMin과 SquishIt을 시도했지만이 작업을 수행하지 못했습니다. 이 조합을 만들기위한 아이디어 나 해결책이 있습니까?

우리의 HTML :

<html manifest="app.manifest"> 

우리의 매니페스트 :

CACHE MANIFEST 

NETWORK: 
data 

CACHE: 
scripts/application/application.js 
scripts/application/database.js 
scripts/application/knockout.extensions.js 
scripts/application/main.js 
scripts/application/models.js 
scripts/application/prototype.extensions.js 
etc... 

감사합니다!

+1

나는 이해할 수 없다. 캐시 매니페스트에'all.js' (또는 무엇이라 부르기를 원하는지)를 나열하지 않는 것이 어떻습니까? –

+0

매니페스트를 변경하는 경우 파일의 ** 크기 **가 변경되었는지 확인하십시오. 이는 표준에서 캐시 할 모든 항목과 함께 매니페스트 파일을 다시로드해야하며 SIZE가 캐시 된 항목과 다른 경우입니다. 수정 시간이나 다른 해시를 확인하지 않습니다. 이것은 "VERSION 1"및 "VERSION 2"등으로보기보다 어려울 수 있습니다.정확히 동일한 수의 문자를 가지고 있으므로 버전 번호를 변경하면 일반적으로 제대로 작동하지 않습니다. 내 트릭은 "X"(또는 일부 문자) 주석을 추가하고 항상 새 버전으로 끝 부분에 하나를 첨부하는 것입니다. –

+0

캐시 된 항목을 새로 고치려면 이전 메모에서 설명한대로 매니페스트 파일을 다시로드해야합니다. 그렇지 않으면 파일 이름이 같더라도 브라우저는 새 버전을로드하지 않고 캐시 된 이전 버전을 계속 사용합니다. –

답변

0

업데이트를 푸시하려면 매니페스트를 하나 이상의 바이트 만 변경하면됩니다. 대부분의 사람들은 버전 번호가있는 주석을 사용합니다.

#version 0.1 

브라우저에 캐시 된 페이지가 표시되면 백그라운드에서 매니페스트를 다운로드합니다. 변경된 경우 매니페스트의 모든 파일을 다시 다운로드합니다. 새 JS 파일도 마찬가지입니다. 새로운 파일 다운로드를 시작하기 위해 필요한 모든 것입니다. 모든 것이 올바르게 다운로드되면 다음 번에 페이지를로드 할 때 새 파일이 사용됩니다.

(*) 브라우저를 다시 다운로드 할 때 파일이 수정되지 않은 경우 (대역폭 사용을 줄이기 위해) 서버가 304를 반환 할 수 있도록 Last-Modified 및/또는 E-Tag 헤더가 전송됩니다. 또한 일부 브라우저는 만료 헤더를 존중하므로 장래가 멀지 않은 만료 헤더를 보냈거나 과거에는 더 좋았습니다. 만료 헤더를 기반으로하는 캐싱은 appCache를 사용할 때 쓸모가 없으므로 일부 브라우저에서는 만료 헤더를 존중합니다.

또한 firefox는 만료가 전송되지 않으면 마지막으로 수정 된 헤더를 기반으로 만료 값을 추측합니다. 파일이 잠시 동안 변경되지 않고 appcache를 사용하고 있다면, 파일 이름을 변경하는 것만 제외하고 firefox가 해당 파일을 다시 다운로드하도록 할 방법이 없습니다 (FX가 업데이트되지 않은 이유를 거의 이해하지 못하는 내 정신을 잃었을 것입니다). 일부 파일).

소화 문제가 무엇인지 잘 모릅니다. 새로운 JS가 이제 작동합니까? 아니면 브라우저에서 새 파일을 사용할 수없는 곳입니까?

0

JavaScript를 최소화하기 위해 빌드 프로세스 또는 릴리스 프로세스가 있습니다. 맞습니까? 이제 해당 프로세스의 매니페스트 부분의 새 버전을 다시 생성해야합니다. 빌드 도구 (make, rake, ant 또는 기타)가 새롭게 축소 된 JavaScript를 다시 작성한 후에는 새 JavaScript 파일을 가리키는 새 매니페스트 파일을 생성해야합니다.

관련 문제