2012-02-09 13 views
2

デバイスごとにキャッシュ内の特定のリソースをターゲットにする方法はありますか。キャッシュマニフェスト内のデバイス固有のリソース管理

オフラインのhtml5オーディオプレーヤーで作業しています。明らかに、私はHTML5の仕様に従って、WebkitやVorbisなどのファイル形式でMp3などのファイルタイプを指定する必要があります。しかし、iPhoneのようなモバイルデバイスでは、私はこの場合mp3で再生するために必要なファイルを取得したいと思っています。特定のファイルをキャッシュするようブラウザに指示する方法はありますか、何を問わずすべてのリソースを追加する必要があります。したがって、必要なファイルをさらにキャッシュして制限を超過しなければならない負担を取り除くことができます(モバイルサファリでは10MBしかキャッシュできないことに気づきます)。

Heres my manifest。

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 

明らかにfirefoxでは、私はogaとwebkitのmp3をキャッシュする必要があります。 洞察力はすばらしいでしょう!

+0

最大10Mb? Jeez、メディアを保存する必要がある場合は何もありません.Webkitの最大キャッシュサイズはどれくらいですか? – Lloyd

+0

私はwebkitがwinと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

またはマニフェストを動的に生成し、解決されたユーザーエージェントに従ってコンテンツを変更します。

関連する問題