写点什么

使用 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:16876
用户头像

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

关注

评论

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

Golang领域模型-资源库

奔奔奔跑

微服务 领域驱动设计 DDD Go 语言

对比 Redis 中 RDB 和 AOF 持久化

超超不会飞

anyRTC语音开黑demo正式上线

anyRTC开发者

音视频 WebRTC 直播 RTC

第六周学习总结

Vincent

极客时间 极客大学

iPad Air把它大哥iPad Pro按在地上摩擦

徐说科技

flutter之踩坑的日子(2)

霜蓝手环

小程序flutter, 跨平台 Flutter Android Apk

MySQL数据库技术与应用:数据查询

华为云开发者联盟

MySQL 数据库 存储

血的教训!千万别在生产使用这些 redis 指令

楼下小黑哥

Java redis 生产事故

别闹,我用1个BTC居然买不了一个爱马仕包

猫Buboo

区块链+

【获奖名单公布】程序员摇身一变摄影师,属于技术人的摄影展示大赛

InfoQ写作社区官方

写作平台 征稿 热门活动

关于数据存储引擎结构,没有比这篇更详细的

华为云开发者联盟

数据库 nosql 存储

Spring 5 中文解析数据存储篇-Spring框架的事物支持模型的优势

青年IT男

Spring5 数据存储

“度拉拉”升职记:中国语音助手的成长史

脑极体

最新:央行副行长详解数字人民币,信息量巨大!

CECBC

人民币 数字人民币

数字货币交易所源码开发,区块链交易系统搭建服务商

13530558032

oeasy 教您玩转 linux 010215 随机谚语 fortune

o

java安全编码指南之:字符串和编码

程序那些事

安全编码指南 java安全编码 java安全编码指南

随想之UI+API

云杉

我是如何从0到1完成一个简单的中间件(1)

sinsy

Java 中间件

再深入一点|binlog和relay-log到底长啥样?

艾小仙

Java MySQL 数据库 架构设计

数字资产会成为人类最大的资产

CECBC

数字资产 数字化时代 孙正义

互联网只改变了商业的一部分,区块链将从根本上重构商业

CECBC

区块链 去中心化 互联网金融

Linux基金会唯一官方微服务培训课程免费学 | 快速构建稳定可靠的微服务应用

TARS基金会

开源 微服务 培训 Linux基金会 TARS

anyRTC RTSP转WebRTC方案

anyRTC开发者

音视频 WebRTC 直播 RTC 安卓

第六周作业

Vincent

极客时间 极客大学

这是一个奇怪的因果关系

陈磊@Criss

摄影

切片真的是引用类型嘛

Gopher指北

Go 语言

追光逐影:焦距与镜头语言

北风

创作 生活 摄影 光影 摄影征文

查找数组中最大值的5种方法!(动图演示)

王磊

Java 面试

分库分表中间件的高可用实践

无毁的湖光

MySQL TCP 高可用 分库分表 高性能

111

不在调上

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