缓存清单中的设备特定资源管理

时间:2012-02-09 03:16:35

标签: html5 html5-audio cache-manifest html5-appcache

是否有办法针对每台设备定位缓存中的某些资源。

我正在使用离线html5音频播放器。显然,我必须根据HTML5规范指定用于webkit的文件类型,如用于webkit的Vp3和用于firefox等的Vorbis。但是,对于像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。 任何见解都会很棒!

2 个答案:

答案 0 :(得分: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支持的正确文件。

答案 1 :(得分:0)

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