问题标签 [django-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
383 浏览

python - Django get_cache_key 适用于数据库后端,但不适用于文件系统

尝试使用Django 文件系统缓存后端时,我遇到了一种奇怪的行为。

在尝试查找每个视图缓存键时,我会执行以下操作:

使用数据库缓存后端,它就像一个魅力:

使用文件干缓存后端:

我检查了文件系统缓存,我确定该条目确实存在。

有人知道如何让它工作以及数据库缓存吗?

0 投票
0 回答
2532 浏览

python - 在 Django 中,如何设置数据库连接超时?

好吧,我知道事情没那么简单。我在我的 settings.py:defaultcache. 我正在使用DatabaseCache来自django.core.cache. 我定义了数据库路由器,因此我可以为我的模型和缓存使用单独的数据库/模式/表。完美的!

现在有时我的缓存数据库不可用,有两种情况:

  1. 数据库崩溃时已经建立了与数据库的连接 - 这很容易 - 我可以使用这个配方:http ://code.activestate.com/recipes/576780-timeout-for-nearly-any-callable/并像这样包装我的查询:

    /li>
  2. 尚未建立与数据库的连接 - 所以我需要包含timelimited一些实际建立数据库连接的代码部分。但我不知道这样的代码存在哪里以及如何有选择地包装它(即只包装cache连接,离开default连接而不超时)

你知道怎么做第2点吗?

请注意,此答案https://stackoverflow.com/a/1084571/940208不正确:

据我所知,没有给出任何结果,并且 cx_Oracle 驱动程序不支持此参数。

0 投票
2 回答
6860 浏览

django - 为缓存 django 站点设置清漆的正确方法

我刚刚在我的后端服务器前面设置了一个只安装了清漆的服务器,在那里我有两个不同的 django 站点,通过 nginx+gunicorn 提供服务

它似乎有效,但我得到 Header Age = 0,并且查看文档,这不是很好。

我想为匿名用户缓存页面,但不是为经过身份验证的用户或者如果用户有一个名为“AUTHENTICATION”的 cookie

这是我的 default.vcl

是否sessionid是为每个用户设置的,即使他们没有登录,这会阻止 Varnish 有效地为匿名用户缓存页面?

编辑:

使用isvarnishworking.com这是输出:

编辑2:

我的新 default.vcl:

来自isvarnishworking.com的结果

编辑3:

我的后端响应(前面没有清漆)是:

0 投票
1 回答
930 浏览

django - Django 中间件、会话和缓存入门

我的 Django 应用程序中的每个用户都与一个部门相关联,几乎每个请求都涉及一些与部门相关的处理。所以我很想使部门对象在整个应用程序中都可用。

以下哪一项(如果有)是最合适的方法:

  1. 自定义中间件,它只是从数据库中检索相关部门并将其附加到request对象上,request.department比如 Django,AuthenticationMiddleware让当前登录的用户在request.user. (参见,例如,这里这里
  2. 当用户登录时将部门置于会话中,然后使用 Django 的request.session界面在视图中检索它。

我还没有机会熟悉 Django 的缓存功能,但我希望最终以每个用户为基础缓存该部门,以避免对每个请求造成额外的数据库命中。我看到Django 的会话提供了内置的缓存支持。我还想象缓存也可以用第一种方法来实现。

对于这种事情,使用会话(上面的#2)而不是自定义中间件(上面的#1)有优势吗?从内部 API 的角度来看,中间件方法似乎更干净,但我猜这正是会话的设计目的——所以也许这是开始使用它们的正确机会?

感谢您的任何指导!

0 投票
4 回答
831 浏览

django - 在 Django 中缓存匿名用户

我将如何为匿名用户缓存页面但在 Django 1.6 中为授权用户呈现它们?曾经有一个听起来很完美的 CACHE_MIDDLEWARE_ANONYMOUS_ONLY 标志,但它已被删除。

我问是因为每个页面都有一个菜单栏,显示登录用户的姓名和指向他/她的个人资料的链接。

这样做的正确方法是什么?一定是一个常见的问题,但我没有找到通过查看 Django 文档的正确方法。

0 投票
1 回答
7374 浏览

django - django-redis-cache 和 django-redis 用于使用 Django 进行 redis 缓存的区别?

我注意到有两个不同的项目使用 redis 进行 django 缓存

https://github.com/sebleier/django-redis-cache/

https://github.com/niwibe/django-redis

一个比另一个更出名,更像是一个标准包?我无法决定使用哪个。

0 投票
9 回答
94399 浏览

python - Redis Python - how to delete all keys according to a specific pattern In python, without python iterating

I'm writing a django management command to handle some of our redis caching. Basically, I need to choose all keys, that confirm to a certain pattern (for example: "prefix:*") and delete them.

I know I can use the cli to do that:

But I need to do this from within the app. So I need to use the python binding (I'm using py-redis). I have tried feeding a list into delete, but it fails:

# And now

# returns 0 . nothing is deleted

I know I can iterate over x:

But that would be losing redis awesome speed and misusing its capabilities. Is there a pythonic solution with py-redis, without iteration and/or the cli?

Thanks!

0 投票
0 回答
152 浏览

python - 防止缓存中间件使用 HTTP_COOKIE 生成缓存键

我在使用 Django 缓存中间件时遇到问题。我想缓存一个昂贵的页面,这样就不需要为每个访问者重新生成它。

似乎 SessionMiddleware 在响应标头中设置了“Vary:Cookie”。这指示缓存中间件在构建缓存键时包含 cookie,这意味着缓存不是跨用户会话的全局缓存。

我的 MIDDLEWARE_CLASSES 设置是:

在 UpdateCacheMiddleware 之前移动 SessionMiddleware 似乎可以解决问题。但是,这个 SO 问题表明这是不正确的顺序: Practical rules for Django MiddleWare ordering?

任何想法我做错了什么?

0 投票
1 回答
82 浏览

django - How change caching setting in django_cache_utils0.7 to cache the files in different directory other than C drive?

I am using django-cache-utils 0.7 where I am not able to change the cache directory to a drive location other than the default location. Please can anyone tell me how to define custom location and set a size limit on the folder ?

When I try with path location instead of localhost it gives error.

0 投票
1 回答
2075 浏览

python - 线程的 Django 全局数据

我在我的单进程多线程 django 服务器中有一个共享的全局数据对象——一个经常使用但不经常计算的对象。计算很费时间,所以我想分享一下结果。

我认为使用 django 的 LocalMemCache 来处理这个简单的数据是可行的。奇怪的是,它似乎适用于单个页面加载时的多个 ajax 调用,但由于某种原因,当我在浏览器中重新加载页面时,缓存再次为空。

我究竟做错了什么?

有没有更好的办法?如果我用线程锁控制写访问,全局变量会同样有效吗?

这基本上是我正在做的事情:

编辑

问题的根本原因是基于访问控制列表(此处不是代码的一部分)检索数据,该列表因请求类型(GET、POST)等而异。计算时,这是一个 POST 请求,其中包含一组访问,并且在读取它时是具有不同访问权限的 GET 请求,并且正在返回不同(且无效)的结果集。