Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AJAX GET在缓存页面中生成受CSRF保护的表单_Ajax_Django_Forms - Fatal编程技术网

使用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表单,这些值也将被缓存。我一直在考虑实施以下解决方案,但我仍然不确定它是否明智

  • 为所有用户(无论是否登录)获取不带任何表单的统一缓存页面
  • 使用AJAX GET请求启动嵌入缓存页面中的小脚本,以便在用户登录时加载表单

  • 这种方法安全且明智吗?如果是这样,我如何使用Javascript/jQuery和Cookie知道我是一个登录用户(即,如何区分客户端的用户和访问者,如服务器端的
    request.user.is_authenticated()

    作为第一种方法,您可以尝试只缓存最重的部分来呈现页面(在此之前,请确保繁重的db查询保持惰性)。您的表单应远离缓存部分

    第二种方法是两阶段缓存:基本思想是不根据cookie和/或用户第一次呈现部分,缓存结果,然后呈现以前排除的部分。这样,大部分页面和大部分负载都会在缓存之后,并且每次请求只呈现小部分


    有一个库实现了这种方法。但不确定它是否适用于您,以及它与cacheops的配合情况如何。

    作为第一种方法,您可以尝试只缓存页面中最重的部分来呈现页面(确保在此之前重的db查询保持惰性)。您的表单应该远离缓存部分

    第二种方法是两阶段缓存:基本思想是不根据cookie和/或用户第一次呈现部分,缓存结果,然后呈现以前排除的部分。这样,大部分页面和大部分负载都会在缓存之后,并且每次请求只呈现小部分

    有一个实现这种方法的库,但不确定它是否适用于您,以及它与cacheops的配合情况如何