Управление ресурсами конкретного устройства в манифесте кэша - PullRequest
2 голосов
/ 09 февраля 2012

Есть ли способ нацелить определенные ресурсы в кеш на устройство.

Я работаю над офлайновым аудиоплеером html5. Очевидно, что я должен указать типы файлов, такие как Mp3 для использования с webkit и Vorbis для firefox и т. Д. Согласно спецификации HTML5. Однако для использования на мобильных устройствах, таких как iPhone, например, я хочу получить только файлы, необходимые для воспроизведения в этом случае mp3. Есть ли способ для меня, чтобы сказать браузерам кэшировать определенные файлы или они должны добавить все ресурсы, несмотря ни на что. Таким образом, избавляя пользователя от необходимости кэшировать больше необходимых файлов и превышая ограничения (я знаю, что в мобильном сафари можно кэшировать только 10 МБ.)

Вот мой манифест.

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 ]

1 голос
/ 04 мая 2012

Как насчет использования

/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 голосов
/ 01 августа 2012

или вы генерируете манифест динамически и изменяете содержимое в соответствии с разрешенным пользовательским агентом.

...