2016-04-25 6 views
0

Я использую методы jquery.ajax для отправки GET-запросов на сервер, кеширование должно быть перегружено, поэтому кэш установлен в false, насколько это хорошо.jQuery.ajax, кеш и временные метки

jQuery автоматически добавляет временную метку (я думаю, эпох-миллисекунды) к URL-адресу запроса, чтобы перехватить кеширование. Есть ли способ управлять меткой времени, используемой jQuery? (Даже секунд будет достаточно и помочь серверу, чтобы сделать это правильно кэширование, ...)

ответ

0

Без изменения кода jQuery вручную, а не чисто.

Дайвинг в код jQuery, мы видим, что nonce (который является только меткой времени в этом случае), сгенерированный jQuery, довольно жестко закодирован.

https://github.com/jquery/jquery/blob/91850ecbbe04ad8f5d89dc050aa1d9002047c435/src/ajax.js (линия 607)

nonce переменная пройдена, но если мы будем следовать по тропе назад это приводит к jQuery.now(), что это всего лишь псевдоним для (new Date).getTime().

Так что ваши варианты:

1) Append собственного значения на каждом URI вручную, и просто игнорировать значение JQuery в.

2) Dirty. Переустановите функцию now() jQuery, чтобы вернуть искомое значение. Дает мне дрожь, просто думая об этом! В результате этого могут возникнуть другие непредвиденные ошибки, поэтому я бы не рекомендовал их, но это возможно. Если вы все еще возвращаете временную метку, близкую к текущей, возможно, это будет не так уж плохо, но это может быть не ваше дело вообще. Наивный пример: https://jsfiddle.net/pf5pskg5/

+0

thx для быстрого ответа, поэтому мне придется делать это вручную (не грязная версия ;-)) – nabittened

0

Попробуйте это:

$.ajaxSetup({cache: false}); 

Что это делает сказать, браузер никогда не кэшировать AJAX запросов.

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

IE 11 попытается использовать свою кэшированную версию AJAX-запросов и LIE О HTTP-статусе, возвращаемом сервером («304 Not Modified»), если вы не отключите кеширование запросов AJAX.

+0

Это просто помогает мне установить параметр cache-param false для всех будущих запросов. Я хочу повлиять на то, какая временная метка используется, когда cache = false; – nabittened

+0

@nabittened Почему вы пытаетесь это сделать? Что вы в конечном итоге пытаетесь достичь? – amphetamachine

+0

, если временные метки являются интервалами, это помогает серверу кэшировать одновременные запросы пользователей. например http://server.com/request?_12345 (представьте себе некоторые миллисекунды пример) и http://server.com/request?_12346 не может быть кэшируются на сервере, событие, если содержание не изменилось этот период времени тогда http://server.com/request?_12 и http://server.com/request?_12 еще может кэшировать и http://server.com/request? _13 будет новым (от другого или того же пользователя) – nabittened

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