我的 Angular 5 应用程序遇到一些 Internet Explorer 问题,因为在 IE 11 我对 django-REST 后端的 get 请求由浏览器缓存。 我找到了question建议向响应中添加特殊的缓存控制 header ,但我没有找到如何使用 Django REST 执行此操作的有效答案。我测试过的所有其他浏览器似乎都可以正常工作。
最佳答案
也许您可以使用中间件类将 Cache-Control
header 添加到所有响应。
class CacheControlMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
response['Cache-Control'] = 'no-cache'
return response
然后将其连接到您的settings.py
MIDDLEWARE = [
...
'your.app.CacheControlMiddleware',
...
]
请记住,这将适用于您可能想要也可能不想要的所有 View (所有 ModelViewSet)。
如果您只想将其应用于特定 View 集,则最好在您的 View 集中重写 retrieve()
和 list()
方法可以在Response
上设置Cache-Control
header 。有关详细信息,请参阅 http://www.django-rest-framework.org/api-guide/generic-views/#mixins
关于django - 如何在 django REST 中禁用 IE11 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220992/