2012-02-09 61 views
2

有沒有辦法針對每個設備的緩存中的某些資源。緩存清單中的設備特定資源管理

我在離線html5音頻播放器上工作。很明顯,我必須指定文件類型,例如用於webkit和Vorbis for firefox等的Mp3,如HTML5規範。但是,對於iPhone等移動設備的使用,我只想獲取在這種情況下播放MP3所需的文件。有沒有辦法讓我告訴瀏覽器緩存特定的文件,或者他們必須添加所有的資源,無論如何。因此,消除了用戶不得不緩存更多需要的文件和超出限制的負擔(我知道在移動Safari中只能緩存10MB。)

繼承人我的清單。

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。 任何見解都會很棒!有關使用

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

,而不是

/player/tunes/waterfall-audio.m4a 

而且PHP代碼

+0

10Mb max? Jeez,如果你需要存儲媒體,那就什麼都沒有。Webkit上的最大緩存大小是多少? – Lloyd 2012-02-09 12:27:42

+0

我相信webkit在win和osx上是無限的 – 2012-02-09 15:33:08

回答

1

什麼(你可以實現另一種語言)

<?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

或者您動態生成清單並根據已解析的用戶代理更改內容。