javascript load () метод кэширует ресурс после его первой загрузки? - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть веб-страница, которая воспроизводит звуковой сигнал при определенных событиях. Проблема в том, что воспроизведение звука прерывистое, и я не мог понять, что его вызвало, пока я не изменил свой код так:

var audioElement = document.createElement('audio');
audioElement.setAttribute('src', '/public/sounds/chime.ogg');
audioElement.load();
audioElement.play();

Теперь звук (только 11 КБ) воспроизводится каждый раз, но я хочу узнать для оценки производительности: файл извлекается с сервера каждый раз или он кэшируется и используется повторно?

мой старый код был таким:

HTML:

<audio id="chime" preload="auto" autobuffer>
    <source src="@{'/public/sounds/chime.ogg'}" />
</audio>

JavaScript:

$('#chime').get(0).play();

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

РЕДАКТИРОВАТЬ: Если все, что вы хотите сделать, это посмотреть, запрашивает ли браузер файл или обрабатывает информацию о кеше, откройте сетевую панель dev tools (или сетевую панель firebug) и перезагрузите страницу.

вы увидите GET для загружаемого файлового ресурса вместе со статусом (посмотрите на вкладку заголовков в инструментах Chrome - вы увидите одно из '200 OK', '200 (из кэша)) 'или' 304 не изменено '.

Взгляните на вкладку времени, и вы увидите, тратит ли она время на загрузку всего файла или просто сравнивает локальный файл с файлом на сервере.

Это поведение будет зависеть от браузера, поэтому если вы тестируете в Firefox, WebKit и IE, вы можете получить несколько иные результаты.


Firefox учитывает информацию о кэшировании в аудиофайле.Заголовки http, браузер webkit выполняет быструю проверку.

http://mindtrove.info/archive/2010/02/1/

0 голосов
/ 04 апреля 2012

Глупый я ... полная ошибка n00b.

Код, как и раньше, работает отлично, теперь все, что мне нужно было сделать, это добавить одну строку перед вызовом play ()

$('#chime').get(0).currentTime=0;

Так что теперь метод play () работает просто отлично.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...