使用AJAX GET在缓存页面中生成受CSRF保护的表单
我的页面在数据库访问中使用了过多的时间,模板处理速度较慢,因此我不得不使用使用使用AJAX GET在缓存页面中生成受CSRF保护的表单,ajax,django,forms,Ajax,Django,Forms,我的页面在数据库访问中使用了过多的时间,模板处理速度较慢,因此我不得不使用使用django cacheops的缓存,该缓存使用Redis。现在,由于我有使用csrftoken的POST表单,这些值也将被缓存。我一直在考虑实施以下解决方案,但我仍然不确定它是否明智 为所有用户(无论是否登录)获取不带任何表单的统一缓存页面 使用AJAX GET请求启动嵌入缓存页面中的小脚本,以便在用户登录时加载表单 这种方法安全且明智吗?如果是这样,我如何使用Javascript/jQuery和Cookie知道我是
django cacheops
的缓存,该缓存使用Redis
。现在,由于我有使用csrf
token的POST表单,这些值也将被缓存。我一直在考虑实施以下解决方案,但我仍然不确定它是否明智
这种方法安全且明智吗?如果是这样,我如何使用Javascript/jQuery和Cookie知道我是一个登录用户(即,如何区分客户端的用户和访问者,如服务器端的
request.user.is_authenticated()
)作为第一种方法,您可以尝试只缓存最重的部分来呈现页面(在此之前,请确保繁重的db查询保持惰性)。您的表单应远离缓存部分
第二种方法是两阶段缓存:基本思想是不根据cookie和/或用户第一次呈现部分,缓存结果,然后呈现以前排除的部分。这样,大部分页面和大部分负载都会在缓存之后,并且每次请求只呈现小部分
有一个库实现了这种方法。但不确定它是否适用于您,以及它与cacheops的配合情况如何。作为第一种方法,您可以尝试只缓存页面中最重的部分来呈现页面(确保在此之前重的db查询保持惰性)。您的表单应该远离缓存部分 第二种方法是两阶段缓存:基本思想是不根据cookie和/或用户第一次呈现部分,缓存结果,然后呈现以前排除的部分。这样,大部分页面和大部分负载都会在缓存之后,并且每次请求只呈现小部分 有一个实现这种方法的库,但不确定它是否适用于您,以及它与cacheops的配合情况如何