django 在使用POST请求后使用DRF中的缓存时,客户端上未显示新数据

y4ekin9u  于 2023-03-24  发布在  Go
关注(0)|答案(1)|浏览(139)

我已经为我的文章视图实现了缓存,并设置了缓存页面。目前我面临的问题是,当我尝试POST请求数据以创建新文章时,页面保持不变。
我想做的是能够发布文章,而我仍然在缓存页面的时间,并显示新的数据,而在该高速缓存页面的时间。
下面是该高速缓存页面代码...
文章观点

class ArticleViewSet(viewsets.ModelViewSet):
    
    serializer_class=ArticleSerializer
    permission_classes=[permissions.IsAuthenticated]
    authentication_classes = [authentication.TokenAuthentication]

    
    @method_decorator(cache_page(300))
    @method_decorator(vary_on_headers("Authorization",))
    def dispatch(self, *args, **kwargs):
       return super(ArticleViewSet, self).dispatch(*args, **kwargs)

有人可以指导我如何才能实现这一点。。

ztmd8pv5

ztmd8pv51#

你不能。
缓存页面是静态响应,在该高速缓存期间不会改变,这就是关键所在。
如果您希望在POST后更新内容,则根本不需要缓存该视图。
相反,你可以使用Django的每视图缓存来缓存视图集中的单个对象。这将允许单个对象在更新时从该高速缓存中失效,在POST请求后为你提供新的数据,同时仍然缓存大部分内容。
然而,请注意,缓存视图集有点令人担忧,因为各种列表,细节,创建等视图都使用相同的URL,但具有非常不同的缓存要求。
一般来说,REST API端点并不是缓存的最佳选择。序列化和反序列化的开销以及内容的高度动态特性通常会超过缓存的任何收益。

相关问题