Кешируются ли ответы на перенаправление Django по умолчанию? - PullRequest
1 голос
/ 09 июля 2020

У меня есть сокращатель URL-адресов, и это представление:

def reroute(request, shorthand, parameter=None):
    ....
    #constructs url
    url = ...
    return HttpResponsePermanentRedirect(url)

В основном я беру URL-адрес http://localhost:8000/silly-big-cat и перенаправляю его на то, что пользователь предоставил, когда он был создан. Поведение, которое я начал замечать, заключалось в том, что браузер один раз попадет на сервер, если я снова перейду по этой ссылке, браузер каким-то образом запомнит, куда он был перенаправлен в прошлый раз, и я не вижу никаких признаков того, что он попал на сервер. Браузер это как-то кеширует? Если это так, есть ли способ предотвратить это кеширование? URL-адрес глупого-большого-кота может измениться в будущем, но браузер все еще может застрять со старым URL-адресом.

1 Ответ

2 голосов
/ 09 июля 2020

Кэширует ли это браузер каким-то образом?

Большинство браузеров действительно запоминают постоянные перенаправления и, следовательно, не утруждают себя сначала посещением URL-адреса, а затем последующим перенаправлением .

URL-адрес глупого-большого-кота может измениться в будущем, но браузер может по-прежнему использовать старый URL-адрес.

Не делайте его постоянным, а используйте простой HttpResponseRedirect [Django -doc] . Это код состояния, если вы не передаете permanent=True, 302, тогда как постоянный имеет HTTP-ответ 301.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...