2012-02-09 5 views
2

장치마다 캐시의 특정 리소스를 대상으로 지정할 수있는 방법이 있습니까?캐시 매니페스트의 장치 별 리소스 관리

오프라인 html5 오디오 플레이어에서 작업 중입니다. 필자는 HTML5 스펙에 따라 웹킷 및 Vorbis와 함께 사용하기 위해 MP3와 같은 파일 유형을 지정해야합니다. 그러나 예를 들어 iPhone과 같은 모바일 장치에서 사용하려면이 경우 mp3로 재생해야하는 파일 만 가져오고 싶습니다. 특정 파일을 캐시하도록 브라우저에 알리는 방법이 있습니까? 아니면 무엇이든 관계없이 모든 리소스를 추가해야합니다. 따라서 사용자가 더 많은 파일을 캐시해야하고 제한을 초과해야하는 부담을 없앨 수 있습니다 (모바일 사파리에서만 10MB 만 캐시 할 수 있음을 알고 있습니다).

Heres 내 매니 페스트.

CACHE MANIFEST 

CACHE: 

index.html 
master.js 
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js 
style.css 
buttons.png 
coldplay.jpg 
/player/tunes/waterfall-audio.m4a 
/player/tunes/waterfall-audio.oga 

분명히 파이어 폭스에서는 oga와 webkit을 캐시해야합니다. 어떤 통찰력도 좋을 것입니다!

+0

최대 10Mb? Jeez, 미디어를 저장해야하는 경우에는 아무 것도 아닙니다. Webkit의 최대 캐시 크기는 얼마입니까? – Lloyd

+0

나는 webkit이 win and osx에서 무제한이라고 믿습니다. –

답변

1

무엇

/player/tunes/getDeviceAudio.php/waterfall-audio.audio 

대신

/player/tunes/waterfall-audio.m4a 

그리고 PHP 코드 사용에 대한 그것입니다

<?php 
// replace the name 
$filename = preg_replace('/.audio$/iu', '', $_SERVER['PATH_INFO']); // waterfall-audio 
$ext = ''; 
switch ($_SERVER['HTTP_USER_AGENT']) { 
    default: 
    case 'a user agent string': $ext = '.oga'; break; 
    case 'another user agent string': $ext = '.m4a'; break; 
} 
$filepath = "/path/to/audio/" . $filename.$ext; 

echo file_get_contents($filepath); 

은 브라우저 생각합니다 (다른 언어로 구현할 수 있습니다) 파일을 캐싱하고 정확한 장치를 캐시합니다. 그리고 각 장치는 userAgent가 지원하는 올바른 파일을 캐시합니다.

0

또는 매니페스트를 동적으로 생성하고 해결 된 사용자 에이전트에 따라 콘텐츠를 변경합니다.