Конечно, есть много таких подходов, как синхронный запрос, обещание, но из моего опыта я думаю, что вы должны использовать подход обратного вызова. Естественно, что асинхронное поведение Javascript. Итак, ваш фрагмент кода можно переписать немного иначе:
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
myCallback(response);
}
});
return result;
}
function myCallback(response) {
// Does something.
}
Короткий ответ: нет способа сказать браузерам пользователей «забыть» перенаправление R 301. 301 означает постоянный, он может быть отменен только при действии пользователя или по истечении срока действия кеша.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html# sec10.3.2
Аналогичные Q и A в Stackoverflow: Apache - как отключить кеширование браузера при отладке htaccess , Не удается удалить 301 перенаправление
Попробуйте избежать перенаправления 301 и вместо этого используйте 302 (временно). Вот статья о том, как установить кеш для 301 переадресации (не пробовал): http://mark.koli.ch/set-cache-control-and-expires-headers-on-a-redirect -with-mod-rewrite
Что вы могли бы сделать в своем сценарии: вы могли бы добавить перенаправление заголовка в файл index.shtml, который отправляет пользователя в исходный файл, где он должен обычно отправляем.