Django缓存是一种技术,它可以帮助您提高Web应用程序的性能。它通过将数据存储在内存中,以便在需要时可以快速访问,而不必重新生成数据。这样可以减少Web应用程序的响应时间,并且可以减少服务器上的负载。
Django缓存原理是将数据存储在内存中,而不是在数据库中。当请求到达服务器时,Django会先检查内存中是否有相关的数据。如果有,它会立即返回该数据;如果没有,它会去数据库中寻找相关的数据。一旦找到了相关的数据,Django会将其保存到内存中,以便下一个请求可以立即使用。
# 获取缓存对象 cache = caches['default'] # 默认使用default配置 # 获取key对应的value value = cache.get(key) # 如key不存在则返回None # 获取多个key对应的value values = cache.get_many(keys) # 如keys不存在则返回{} # 获取所有key-value all_values = cache.get_all() # 如cache为空则返回{} # 设置key-value, timeout=None表示永久保留 cache.set(key, value, timeout=None) # 成功返回True, 失败返回False # 批量设置多个key-value, timeout=None表示永久保留 cache.set_many(mapping, timeout=None) # 成功返回True, 失败返回False # 删除单个key-value cache.delete(key) # 成功返回True, 失败返回False # 批量删除多个key-value cache.delete_many(keys) # 成功返回True, 失败返回False
到目前为止,本文档的重点是缓存您自己的数据。 但是另一种类型的缓存也与 Web 开发相关:由“下游”缓存执行的缓存。 这些系统甚至在请求到达您的网站之前就为用户缓存页面。
下面是一些下游缓存的例子:
下游缓存是一个很好的效率提升,但它存在一个危险:许多网页的内容基于身份验证和许多其他变量而有所不同,并且缓存系统盲目地仅基于 URL 保存页面可能会将不正确或敏感的数据暴露给后续这些页面的访问者。
例如,如果您使用网络电子邮件系统,那么收件箱页面的内容取决于登录的用户。如果 ISP 盲目缓存您的站点,那么通过该 ISP 登录的第一个用户将拥有他们的用户 - 为该站点的后续访问者缓存的特定收件箱页面。
幸运的是,HTTP 为这个问题提供了解决方案。存在许多 HTTP 报头以指示下游缓存根据指定的变量来区分它们的缓存内容,并且告诉缓存机制不缓存特定的页面。
模型继承在 Django 中与普通类继承在 Python 中的工作方式几乎完全相同,但也仍应遵循本页开头的内容。这意味着其基类应该继承自...
JMenu类表示从菜单栏部署的下拉菜单组件。类声明以下是javax.swing.JMenu类的声明public class JMenu extends JMenuItemimplemen...
本教程阐明了 JUnit 中的方法执行过程,即哪一个方法首先被调用,哪一个方法在一个方法之后调用。以下为 JUnit 测试方法的 API,...
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!“看看星空,会觉得自己很渺小,可能我们在宇宙中...
MyBatis-Plus 条件构造器-AbstractWrapperexists(String existsSql)exists(boolean condition, String existsSql)拼接EXISTS(sql...
该功能为了保护数据库配置及数据安全,在一定的程度上控制开发人员流动导致敏感信息泄露。3.3.2开始支持配置安全YML配置:// 加...