【问题标题】:Are Django redirect responses cached by default?Django 重定向响应是否默认缓存?
【发布时间】:2020-07-09 20:16:49
【问题描述】:

我有一个网址缩短器,这是视图:

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

基本上,我接受一个 url http://localhost:8000/silly-big-cat 并将其路由到用户在创建它时提供的任何内容。我开始注意到的行为是浏览器会访问服务器一次,如果我再次访问该链接,浏览器会以某种方式记住上次重定向的位置,并且我看不到它访问服务器的迹象。浏览器是否以某种方式缓存了这个?如果是这种情况,有没有办法防止这种缓存发生? silly-big-cat 的 URL 将来可能会更改,但浏览器可能仍会卡在旧 URL。

【问题讨论】:

  • 我认为浏览器本身通常会缓存永久 URL 是的。虽然这取决于浏览器到浏览器。但是永久重定向的想法是永久的。

标签: django redirect


【解决方案1】:

浏览器是否以某种方式缓存它?

大多数浏览器确实会记住永久重定向,因此不必费心先访问 URL,然后再跟随重定向。

silly-big-cat 的 URL 将来可能会更改,但浏览器可能仍会卡在旧 URL。

不要让它永久化,而是使用简单的HttpResponseRedirect [Django-doc]。这有作为状态码,如果你不通过permanent=True,302,而永久的有HTTP响应301。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2014-08-04
    • 2015-08-21
    相关资源
    最近更新 更多