2014-02-05 3 views
1

Немного неясное название, но здесь идет ....JQuery/Магистральные и Firefox против Chrome HTTP запросы

У меня есть магистральная пользовательский интерфейс, который делает огромное количество вызовов к API на странице загрузки. Он использует Backbone Fetch Cache для кэширования запросов GET. В Chrome промаха в кеше означает, что при выполнении многих запросов GET на один и тот же URL одновременно Chrome заставляет дубликаты XHR ждать, пока первый не завершится, а затем последующие попадут в кеш.

В Firefox все XHR обрабатываются немедленно, даже если они являются запросами GET для одной и той же конечной точки API. Рефакторинг это из кода будет болью, поэтому вопрос:

Вопрос:

Есть ли существующий метод для исправления либо синхронизации() части магистральной сети или JQuery, так что поведение Chrome используется во всех браузерах? так что Firefox ждет первого из повторяющихся запросов GET перед обработкой других?

ответ

1

Вы можете изменить Backbone.ajax, чтобы создать списки запросов и дождаться завершения первого, прежде чем испускать последующие. Например

//cached requests 
Backbone.xhrs = {}; 

Backbone.ajax = function(opts) { 
    // cache GET requests, not the others 
    if (opts.type!=='GET') 
     return Backbone.$.ajax.apply(Backbone.$, arguments); 

    var xhr; 

    // issue the request if a cached version does not exist 
    if (!Backbone.xhrs[opts.url]) { 
     xhr = Backbone.xhrs[opts.url] = Backbone.$.ajax.call(Backbone.$, opts); 
    } else { 
     xhr = Backbone.xhrs[opts.url].then(function() { 
      return Backbone.$.ajax.call(Backbone.$, opts); 
     }); 
    } 

    return xhr; 
}; 

и демо http://jsfiddle.net/nikoshr/vexNP/

+0

Кэширование не проблема, проблема в том, что многие GETs к тому же URL огня в то же время (до того, как первый закончил и хранить запись в кэше) , Chrome ожидает запросов, тогда как firefox пытается фактически выполнить их все. Я думаю, что это разница в их реализациях XHR, которые я хочу нормализовать. –

+0

Еще один удар по нему, когда запросы 2 и выше огня после первого разрешения. – nikoshr

+0

Выглядит неплохо, я попробую. Гораздо чище, чем моя текущая попытка. –

Смежные вопросы