热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Rails3.1和Http页面缓存-Rails3.1andHttpPageCaching

GiventhatHerokuCedardoesnthavehttpcachingprovidedbyVarnishIwouldliketouseRack::Cach

Given that Heroku Cedar doesn't have http caching provided by Varnish I would like to use Rack::Cache. I have been told that rails 3.1.1 have Rack::Cache active by default, I just need to make sure to have in the configuration:

鉴于Heroku Cedar没有Varnish提供的http缓存,我想使用Rack :: Cache。我被告知rails 3.1.1默认情况下Rack :: Cache处于活动状态,我只需要确保在配置中:

config.action_controller.perform_caching = true

and I need to pick a cache store, for this experiment I'm using:

我需要选择一个缓存存储,对于我正在使用的这个实验:

config.cache_store = :memory_store

In the action of the page I want to cache I've added the following lines:

在我要缓存的页面的操作中,我添加了以下行:

response.header['Cache-Control'] = 'public, max-age=300'
response.header['Expires'] = CGI.rfc1123_date(Time.now + 300)

This code used to work fine with Varnish, the first request would return a 200 and the subsequent (for 5 mins) would return a 304.

此代码用于与Varnish一起使用,第一个请求将返回200,随后(5分钟)将返回304。

This doesn't happen with Rails 3.1 and Heroku Cedar Stack. I do get those headers in the response but subsequent requests returns 200 instead of 304.

Rails 3.1和Heroku Cedar Stack不会发生这种情况。我确实在响应中获得了这些标头,但后续请求返回200而不是304。

What am I doing wrong? Thank you.

我究竟做错了什么?谢谢。

1 个解决方案

#1


11  

As you noted, the Cedar stack doesn't use Varnish. That means a web request will always hit the ruby server.

如您所述,Cedar堆栈不使用Varnish。这意味着Web请求将始终命中ruby服务器。

With that in mind, Rack::Cache will respect your headers and serve the cached content.

考虑到这一点,Rack :: Cache将尊重您的标头并提供缓存的内容。

However, since the request is actually going past the http layer into the rails app, the response will always be 200 since the cache doesn't happen at the http layer anymore.

但是,由于请求实际上是通过http层进入rails应用程序,因此响应将始终为200,因为缓存不再发生在http层。

To confirm this is true, insert this in one of your cached actions:

要确认这是真的,请在您的一个缓存操作中插入:

<%= Time.now.to_i %>

<%= Time.now.to_i%>

Then, reload the page several times and you'll notice the timestamp won't change.

然后,重新加载页面几次,你会发现时间戳不会改变。


推荐阅读
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 本文介绍 SQL Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • 本文详细探讨了在微服务架构中,使用Feign进行远程调用时出现的请求头丢失问题,并提供了具体的解决方案。重点讨论了单线程和异步调用两种场景下的处理方法。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • SDN网络拓扑发现机制解析
    本文深入探讨了SDN(软件定义网络)中拓扑发现的原理与实现方法,重点介绍了LLDP协议在OpenFlow环境中的应用,并讨论了非OpenFlow设备存在时的链路发现策略。 ... [详细]
author-avatar
李淑茹韦雯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有