rest - 为 REST 资源提供极其激进的 HTTP 缓存的建议

标签 rest scalability varnish haproxy

我有一个设置,我希望在我的内部代理上有非常积极的 HTTP 缓存。基本上,我想要实现的是一个简单的缓存策略,如下所示:

  • 任何不是 500x 或 400x 的 GET 请求都被无限期地缓存
  • 任何不是 500x 或 400x 的 PUT 或 POST 或 DELETE 或 PATCH 都会使资源及其子路径无效(因为我只使用嵌套资源并且我经常使用它们)。

  • 我也不打算拥有大量的子路径(每个根级资源大约 1000 个,而且显然越来越少)。

    所以基本上我想避免绝对大部分的请求,甚至触及我的核心应用程序。

    我计划在一台具有大量 RAM 和恶意存储的单独机器上运行缓存后端,并且将会有一台这样的机器(所以我不必跨集群或类似的东西过期)。

    哪个代理缓存更适合这项任务? Varnish 还是HAProxy?我应该寻找哪些设置来实现这种到期?这是使 REST 服务器缓存友好的常见模式吗?

    最佳答案

    HAproxy只是一个负载平衡器。它不会为您做任何缓存。

    Varnish 是您描述的案例的不错选择。对于配置,最好从后端发送缓存详细信息(ttl/到期时间和可访问性),这将指示 Varnish 处理文档的缓存。

    关于rest - 为 REST 资源提供极其激进的 HTTP 缓存的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16384176/

    相关文章:

    rest - Grails应用程序可以同时包含REST客户端和服务器吗?

    android - Retrofit 2.0 如何在不转换的情况下获取 JSON 对象?

    performance - 在没有明确需求的情况下如何进行性能和可扩展性测试?

    linq-to-sql - Linq To SQL 不可扩展是什么意思?

    c - nanomsg 或 ZeroMQ 是否适合扩展客户端连接数?

    php - Docker, Varnish ,对等连接重置

    caching - 使用 Varnish 更改 header 中的引荐来源网址

    ruby-on-rails - 使用 Rails 存储线程安全的全局请求特定数据

    java - Spring Boot RequestMapping 删除不起作用

    magento - 使用 Varnish -松节油组合排除结帐和客户模块/magento 部分