写点什么

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

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

关注

评论

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

并发的HashMap为什么会引起死循环?

Java小咖秀

容器 hashmap 并发

关于Go语言,你不得不知的并发模式!

博文视点Broadview

区块链BaaS服务平台开发,助推中小企业快速落地

13828808769

区块链+ #区块链#

SumSwap与金色财经共为 首席创新合作大会在上海拉开帷幕

币圈资讯

函数

奈奈奈奈

如何在 GitHub 上选择合适的开源工具和项目

耳东@Erdong

GitHub 4月日更

7.1 Go语言从入门到精通:Cobra介绍

xcbeyond

cobra Go 语言 4月日更

我用Rocket-API实现了开放平台

棒锤🐮

文字识别:关键信息提取的3种探索方法

华为云开发者联盟

深度学习 文字识别 图结构 关键信息提取 栅格

容器&服务: ClickHouse与k8s架构

程序员架构进阶

Kubernetes Prometheus Clickhouse 28天写作 4月日更

starforce源码解读二:游戏入口

风翱

Unity 源码解读 4月日更

构建基于Spring Cloud向Service Mesh框架迁移的解决方案及思路

xcbeyond

架构 云原生 Service Mesh 解决方案 引航计划

如何只用一个小时定制一个行业AI 模型?

华为云开发者联盟

自然语言处理 AI 华为云 hdc ModelArts Pro

知乎高赞:为什么同样是分布式架构的Kafka需要Leader而Redis不需要

中间件兴趣圈

分布式 raft 一致性 数据分片

「编程概念」融合理解函数式和面向对象

顿晓

面向对象 4月日更 函数式 融合

趁早

小天同学

个人感悟 成功 4月日更 恋爱 趁早

从金融到物联网 区块链的落地应用将如何改变世界?

CECBC

区块链

来学Python啦,用Python详细讲解温度转换器

Bob

Python Python 游戏编程 4月日更

优秀程序员必备技能之如何高效阅读源码

中间件兴趣圈

方法论 源码解读

区块链给普通人带来的机会!

CECBC

区块链

maven中心仓库OSSRH使用简介

程序那些事

Java maven 程序那些事

传统金融体系vs新金融体系,区块链改变了什么?

CECBC

金融

释放千行百业数据价值,华为云DAYU有一套

华为云开发者联盟

大数据 数据湖 华为云 数据价值 dayu

Angular,AngularJS 和 react

HoneyMoose

强化区块链应用 破解知识产权运营难题

CECBC

区块链

世界五百强第一的沃尔玛在用区块链做什么

CECBC

区块链

基于树莓派和OpenVINO的边缘计算

IT蜗壳-Tango

IT蜗壳教学 4月日更

场景化面试:能聊聊你对充血模型和贫血模型的理解吗?

面试官问

领域驱动设计 DDD 充血模型 贫血模型

「开源免费」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之序列号自定义组件(四)

crudapi

Vue crud crudapi 序列号 quasar

什么是你上大学才知道的事情?

🌍

4月日更

Rust从0到1-结构体-方法

rust 方法 struct 结构体 method

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