Django中的重定向
在我的主页上,我有一个个人头像。当我更换头像时,我会更新数据库,然后把页面重定向到/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}}
)。这样一来,图片的链接就会变成不同的,浏览器就不会使用之前缓存的版本了。