Django中的重定向

1 投票
2 回答
671 浏览
提问于 2025-04-16 09:42

在我的主页上,我有一个个人头像。当我更换头像时,我会更新数据库,然后把页面重定向到/home。但是现在,当我重定向后,旧的头像仍然显示,直到我点击刷新按钮。请问我是不是做错了什么?

这段代码是在Python中写的

 return HttpResponseRedirect('/home')

这段代码是在/home的基础HTML页面中

   <img src="{{photo}}" ></img>

2 个回答

1

可能是浏览器把头像缓存了。为了避免这个问题,有几种方法:

  • 可以通过修改响应头来禁用缓存。这种方法在实际使用中并不好,因为这样头像就不会被缓存,每次请求页面时都会重新加载头像,这样会大大增加流量。

  • 在更新头像时,可以更改文件名。比如,你可以使用内容的哈希值,或者像这样用SHA1(userid + 上传时间戳)来生成文件名。

  • 在头像的响应头中使用HTTP ETag

1

我看到一个小技巧,内容是这样的:

<img src="{{photo}}?version={{version}}"></img>

这里的version是一个版本号,每次你更新文件的时候就把这个数字加一(你也可以用 {{photo.file}}{{photo.version}})。这样一来,图片的链接就会变成不同的,浏览器就不会使用之前缓存的版本了。

撰写回答