写点什么

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

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

关注

评论

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

收音机焊接

aaaaa

从萧何进入咸阳丞相府到数字化时代的决策

数列科技杨德华

28天写作

分页问题-Offset-based Pagination和Cursor-based Pagination

诸葛小猿

分页 Offset-based Pagination Cursor-based Pagination

【LeetCode】猜字谜Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

记忆这件“小事”「Day 7」

道伟

心理学 28天写作

云主机配置微信公众号后台全记录

小jack

Elasticsearch 相关度评分

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

写给 Go 初学者的指北

Rayjun

Go 语言

简单脚本监控SSL证书,并到期提醒续签

运维研习社

优雅地停止Spring Boot应用

韩斌

28天瞎写的第二百四十五天:怎么样开始练习冥想?

树上

冥想 28天写作 正念

(28DW-S8-Day7) 比特币原始文献略读

mtfelix

比特币 区块链 白皮书 28天写作 工作量证明

智能客服+智能助手,这波“数字员工”的业务能力太强了!

华为云开发者联盟

华为 AI 数字 智能客服 智能助手

无人机蜂群

冠冠

翻译:《实用的 Python 编程》02_07_Objects

codists

Python

前端170面试题+答案学习整理(良心制作)

我是哪吒

程序员 面试 大前端 28天写作 2月春节不断更

Linux常见IO分析工具

运维研习社

LiteOS:SpinLock自旋锁及LockDep死锁检测

华为云开发者联盟

死锁 LiteOS 自旋锁 SpinLock LockDep

产品迭代最有力的工具:每周产品讨论会

boshi

产品策略 七日更

开源镜像仓库Harbor的镜像安全

运维研习社

Docker 安全 Harbor CI/CD

元宵佳节快乐哦

Nydia

Nginx中常见header配置及修改

运维研习社

nginx Linux

如何探索自己的职业价值观,让工作更有动力

一笑

28天写作

万绿丛中一点红——雷斯多夫效应

Justin

心理学 交互设计 28天写作 游戏设计

我看JAVA 之 基本数据类型与封装类型

awen

Java 源码 基本数据类型

第五周作业:用例流程图

克比

分布式应用监控与链路追踪:SkyWalking

xcbeyond

微服务 监控 Skywalking 调用链 28天写作

攀爬天梯的手机厂商,能从LG的滑落中学到什么?

脑极体

这道 Hard 到底难在哪里?大概是难在考察的全是违反“人性直觉”的内容吧 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

Java中的String类型到底占用多大的内存空间?

冰河

Java 性能优化 string 高并发 内存空间

微信公众平台-渠道二维码开发

Geek_247dae

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