【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

使用 Rack::Cache 进行平滑的 HTTP 缓存

  • 2008-11-20
  • 本文字数:685 字

    阅读完需:约 2 分钟

缓存 Web 应用的方式有很多,他们通常都很复杂。随着应用基础设施的不断增加,基本的 Rails 页面缓存的管理变得越发单调乏味了。

Rails 2.2 通过 HTTP headers:last_modified 与 etag 引入了条件性GET 。Ryan Tomayko 遵循着RFC2616 中的internet 标准缓存说明引入了 Rack::Cache

Rack::Cache Rack 中间件的一部分,它通过基本的存储方式(磁盘、堆及 memcache)与针对缓存策略的配置系统实现了 RFC2616 中的大多数缓存特性。它可与任何使用 Rack 的 Ruby web 框架协作良好,同时它也通过了 Ruby 1.8.6 及 1.8.7 的测试。

其部分设计的灵感来源于 Python 的缓存框架 Django

Rack::Cache 扮演着网关代理( Varnish Squid )的角色,我们可以轻松使用它。它支持基于过期(expiration-based)的缓存、验证模型及各种 header 字段。

正如 Ryan King所述,如果你的应用真的需要它的话,你可以平滑地移植到真正的网关代理上:

一旦应用变得大而复杂时,你就需要使用一个像 squid 或者 varnish 这样的 http 反向代理缓存,然而从 rails 式的页面缓存到 HTTP 缓存的转变不是那么容易的。你不得不对部署和应用进行大面积的更改。这有点不爽。 借助于 Rack::Cache,你只需改变部署即可。你甚至可以增量完成它。你可以首先通过 Rack::Cache 在堆中进行缓存,然后转换到文件系统,最后到 memcache 中。当到达其范围极限时,你可以在应用前增加 squid 或者 varnhish,然后移除 Rack::Cache。对于部署来说,每一步只有一个主要的变化,这比在单独的操作中掺杂着几个大的变化要容易的多。

看看 Ryan 即将发布的基准将会很有意思。

查看英文原文: Adobe MAX Day 1 Brings AIR 1.5 and Flex 3.2

2008-11-20 11:16800
用户头像

发布了 88 篇内容, 共 258.7 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

【愚公系列】2022年06月 面向对象设计原则(六)-合成复用原则

愚公搬代码

6月月更

【Spring 学习笔记(十)】Spring 使用注解整合 Mybatis

倔强的牛角

Java spring Java EE 6月月更

RF中使用reuqests的两种方式

红毛丹

Python 6月月更

消息队列入门MQ

卢卡多多

MQ 消息队列 6月月更

一文读懂Logstash原理

恒山其若陋兮

6月月更

设计消息队列存储消息数据的 MySQL 表格

小虾米

「架构实战营」

LabVIEW控制Arduino实现超声波测距(进阶篇—5)

不脱发的程序猿

单片机 LabVIEW Arduino VISA 超声波测距

『Three.js』辅助坐标轴

德育处主任

canvas three.js 6月月更

volatile的解构

卢卡多多

volatile 6月月更

ConcurrentHashMap 源码分析-put方法

zarmnosaj

6月月更

预解析与作用域

Jason199

js 全局作用域 作用域 6月月更

使用 select 切换协程

宇宙之一粟

golang 6月月更

vue自定义指令

小恺

6月月更

数据库每日一题---第9天:销售员

知心宝贝

数据库 算法 前端 后端 6月月更

LabVIEW控制Arduino实现红外测距(进阶篇—6)

不脱发的程序猿

单片机 LabVIEW VISA Arduino Uno 红外测距

向线程池提交任务

急需上岸的小谢

6月月更

云原生时代微服务架构设计实践

Damon

6月月更

模块八-设计消息队列存储消息数据的 MySQL 表格

凯博无线

flutter系列之:flutter中常用的container layout详解

程序那些事

flutter 程序那些事 6月月更

LabVIEW Arduino电子称重系统(项目篇—1)

不脱发的程序猿

单片机 LabVIEW VISA ​Arduino Uno 电子称重系统

【Python技能树共建】lxml 模块

梦想橡皮擦

Python 6月月更

在M1上体验三星T7移动硬盘的性能

IT蜗壳-Tango

IT蜗壳教学 6月月更

Flutter doctor 显示xcode没有安装的解决办法

坚果

6月月更

消息队列存储消息数据的 MySQL表

Dean.Zhang

动态规划之0-1背包问题(详解+分析+原码)

未见花闻

6月月更

统一认证中心 Oauth2 高可用坑

Damon

微服务架构 安全架构 6月月更

BaseDexClassLoader那些事

北洋

6月月更

为什么需要微服务

阿泽🧸

微服务 6月月更

leetcode 257. Binary Tree Paths 二叉树的所有路径(简单)

okokabcd

LeetCode 搜索 数据结构与算法

直播预告|FeatureStore Meetup V3 重磅来袭!

星策开源社区

机器学习 开源 DevOps 特征平台 MLOps

思科私有动态路由协议:EIGRP

wljslmz

动态路由 6月月更 路由协议 EIGRP

使用Rack::Cache进行平滑的HTTP缓存_Ruby_Sebastien Auvray_InfoQ精选文章