Функция Clone AppendTo в цикле перегружает запросы к серверу - вместо этого должна загружаться из кэша!(Jquery) - PullRequest
4 голосов
/ 07 октября 2011

Эта функция клонирует звуковые объекты для списка изображений.

Проблема в том, что когда объект записывается в DOM, браузер запрашивает сервер, который загружает его как запрос 200. Тем не менее, он загружает только 4 разных звуковых файла, снова и снова. Поэтому он должен загружаться как запрос 304 из кэша браузера.

Все звуковые файлы изначально загружаются в HTML, а затем клонируются. Всякий раз, когда страница обновляется, звуковые файлы в HTML получают 304 запроса и загружаются из кеша, но любой клонированный файл загружается с запросом 200 (не из кеша)!

Есть ли у меня возможность клонировать эти объекты без отправки браузером запроса на загрузку сервера в DOM? Просто полностью на стороне клиента? Данные уже записаны в HTML один раз.

Я бы предпочел вообще не отправлять запросы на сервер для клонирования этих объектов. Поскольку он клонирует более 50, это 50 запросов, отправляемых на сервер в секунду. Перегрузка.

var increment = 0;
$("img").each(function(i) { //loop for each item
    if (increment > 4){
        increment = 0;  
    }

    if (i != 0) {  //only clone if there are more than one 'img' items      
        $("#hover-" + increment)  //item to clone     
          .clone(true)
          .attr("id", "beep-" + i)  //new name of object
          .appendTo($(this).parent()); 
    }

    $(this).data("instance", i);  //save the integer for loop
    increment=Math.floor(Math.random()*3);  //change increment
})

1 Ответ

0 голосов
/ 13 октября 2011

Каждая ссылка на изображение / звуковой файл разрешается в запросе к серверу, если изображение не кэшируется в браузере. Вы можете установить «Expires» и «Cache-Control» заголовки вашего изображения для принудительного кэширования. Эти заголовки отправляются с сервера при запросе изображения.

Другим вариантом является кэширование на стороне сервера изображений, используя что-то вроде Memcache. Таким образом, каждая ссылка на изображение будет по-прежнему разрешаться на сервере, но изображение будет кэшироваться на стороне сервера для более быстрого доступа.

Для получения дополнительной информации см. Виды кэшей, Как работают веб-кэши, Как (и как нет) контролировать кэши http://www.mnot.net/cache_docs/

...