2012-02-09 58 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

或者您动态生成清单并根据已解析的用户代理更改内容。