Как я могу определить, когда ресурс веб-страницы кэшируется?

есть ли способ в JavaScript для меня, чтобы сказать, является ли ресурс уже в кэше браузера?

мы инструментируем часть наших клиентских просмотров страниц, чтобы получить лучшие данные о том, как быстро загружаются страницы для наших пользователей. В первый раз, когда пользователи приходят на наш сайт, ряд ресурсов (JS, CSS, изображения) кэшируются браузером, поэтому их первоначальный просмотр будет медленнее, чем последующие.

прямо сейчас, эти данные смешаны вместе, поэтому трудно сказать начальную загрузку страницы из последующего просмотра страницы, который медленный по какой-то другой причине. Я хотел бы кросс-браузерный способ проверить, уже ли кэш загрунтован, чтобы я мог разделить два вида просмотра страниц и проанализировать их отдельно.

2 ответов


нет API JavaScript для проверки, кэшируется ли ресурс. Я думаю, лучшее, что вы можете сделать, это проверить, сколько времени потребовалось, чтобы загрузить ресурсы, и ведро с более коротким временем загрузки вместе.

В верхней части страницы:

<script>var startPageLoad = new Date().getTime();</script>

на каждый ресурс:

<img src="foo.gif" onload="var fooLoadTime = startPageLoad - new Date().getTime()">
<script src="bar.js" onload="var barLoadTime = startPageLoad - new Date().getTime()">

сообщая времена загрузки:

var fooProbablyCached = fooLoadTime < 200; // Took < 200ms to load foo.gif
var barProbablyCached = barLoadTime < 200; // Took < 200ms to load bar.gif

вам может потребоваться использовать события onreadystatechange вместо onload в IE.


для этого вам нужен плагин. Firebug может сказать вам на вкладке "NET", как только вы установите его (для Firefox). Сам JavaScript не может видеть HTTP-трафик браузера.