Почему браузер не кэширует 301 в AJAX-запросе? - PullRequest
1 голос
/ 28 марта 2009

Это запрос XMLHttpRequest:

$.ajax({
    method: "get",
    url: "getPage.php",
    data: $data,
    dataType: 'json',
    timeout: 2000,
    success: function(result) {
        handleContent(result);
        }
    });

Это getPage.php? Data = data

header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
header("Cache-Control: max-age=" . $offset . ", public");
header("HTTP/1.1 301 Moved Permanently");
header("Location: $location);

Это местоположение в $:

header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
header("Cache-Control: max-age=" . $offset . ", public");
print $print;

Клиентский браузер правильно кэширует $ location. Однако он не кэширует перенаправление в getPage.php? Data = data

Каждый раз, когда вызывается ajax-запрос, он запрашивает GET getPage.php? Data = data.

Я бы хотел, чтобы вместо него автоматически получалось $ location (или, скорее, попробуйте GET $ location и получить страницу из кэша).

Разве это не то, для чего предназначен 301 Permanent Redirect? Создание редиректа, который кэшируется браузером (плюс, конечно, прокси, поисковая система и т. Д.)?

Пожалуйста, не задавайтесь вопросом, почему я решил сделать это таким образом. У меня есть причины для этого, которые я не собираюсь здесь обсуждать. Все, что мне нужно, - это ответ и, возможно, решение, которое позволит перенаправить 301 в кеш, что приведет к тому, что после первого запроса вообще не будет запросов GET.

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 28 марта 2009

Редактировать : большинство браузеров (ноябрь 2013 г.) делают перенаправления кэша, см. Browserscope (тест "Перенаправление кэша"), но на тот момент это не было спросил.

1 голос
/ 28 марта 2009

Эта ветка и ее комментарии содержат способы решения этой конкретной проблемы, хотя представленные решения для этой проблемы все еще кажутся немного «ненормальными» (в основном из-за реализаций браузера на данный момент):

Как управлять запросом на перенаправление после вызова jQuery Ajax

Надеюсь, вы найдете его информативным.

...