跳转到主要内容

为ASGI应用程序提供服务器端HTTP缓存,灵感来源于Django的缓存框架

项目描述

asgi-caches

Build Status Coverage Package version

asgi-caches 提供中间件和实用程序,用于向ASGI应用程序添加服务器端HTTP缓存。它由 async-caches 驱动,并受到Django缓存框架的启发。

文档可在: https://asgi-caches.florimond.dev

注意:此项目处于“alpha”状态。一些功能仍需实现,并且您应该预期在次要版本之间会有破坏性API更改。

功能

  • 与任何ASGI应用程序兼容(例如,Starlette,FastAPI,Quart等)。
  • 支持全局或端点级别的缓存。
  • 能够对缓存行为进行微调(TTL,缓存控制),直到端点级别。
  • 通过与 async-caches 的松散耦合实现干净且明确的API。
  • 完全类型注解。
  • 100%测试覆盖率。

安装

pip install "asgi-caches==0.*"

快速入门

from asgi_caches.middleware import CacheMiddleware

cache = Cache("locmem://null")

async def app(scope, receive, send):
    assert scope["type"] == "http"
    headers = [(b"content-type", "text/plain")]
    await send({"type": "http.response.start", "status": 200, "headers": headers})
    await send({"type": "http.response.body", "body": b"Hello, world!"})

app = CacheMiddleware(app, cache=cache)

此示例

  • 设置内存缓存(具体内容请参阅 async-caches 文档)。
  • 设置应用程序(在这种情况下,一个原始的ASGI 'Hello, world!' 应用程序)。
  • 在整个应用程序上应用缓存。

欲了解更多信息,请参阅 文档

致谢

应归功于Django的开发者和维护者,因为API和实现的大部分灵感直接来自 Django缓存框架

许可证

MIT

变更日志

此项目中所有值得注意的更改都将记录在此文件中。

格式基于 Keep a Changelog

0.3.1 - 2019-11-23

变更

  • 禁止多次应用缓存中间件。(Pull #21)

0.3.0 - 2019-11-12

新增

  • 添加 @cache_control() 装饰器和其底层的中间件。(Pull #19)

0.2.0 - 2019-11-12

新增

  • 添加 @cached() 装饰器。(Pull #15)

0.1.1 - 2019-11-12

新增

  • 添加 DEBUGTRACE 日志。(Pull #14)

0.1.0 - 2019-11-12

新增

  • 添加 CacheMiddleware。(Pull #8)
  • 当请求没有cookie时,防止缓存包含cookie的响应。(Pull #9)
  • 如果缓存TTL为零,则防止缓存响应。(Pull #10)

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

asgi-caches-0.3.1.tar.gz (11.7 kB 查看哈希值

上传时间

构建分布

asgi_caches-0.3.1-py3-none-any.whl (12.4 kB 查看哈希值

上传时间 Python 3

支持