真实世界中的Rails: Rails中的缓存

产品 Rails 应用程序的不同缓存策略

简介:Ruby on Rails 现在愈来愈多地被作为基本框架广泛用于大中型可伸缩的复杂应用程序中。由 于 Ruby 是一种解释型语言,所以要想使 Rails 随您所愿,需要使用很多不同的缓存策略。本文展示了 目前可用的一些缓存策略,包括我们为 ChangingThePresent.org 所使用的那些。

关于本系列

Rails 在开发人员中享有盛誉。Rails 一度备受瞩目,是业界争论的焦点。人们对它的评价也大 相径庭:从一种高生产率技术到一个小玩意,从市场定位准确到宣传过度。与很多新技术一样,Rails 也 被毫无例外地被打上了 “未经验证、可扩展性有限” 的标记。与 C 和 Java 语言不 同,Ruby 是解释性的,且存在性能上的一些固有阻碍。

实际上,Internet 上的许多大型网站都 使用的是解释性语言。这些网站均引入了类似 Ruby 所采用的相同的策略:即集群式的无共享的架构。此 外,缓存也是必需的。要获得尽可能好的性能,许多站点都需要采用一种有效的缓存策略。Rails 开发人 员也开始跟随其后。

几个场景

首先,让我先来带您浏览几个 ChangingThePresent.org 中 的页面吧。我将显示站点中几个需要缓存的地方。然后,再指出我们为其中每个地方所做出的选择以及为 实现这些页面所使用的代码或策略。尤其会重点讨论如下内容:

全静态页面

几乎无变化的 全动态的页面

动态页面片段

应用程序数据

先来看看静态页面。几乎每个站点都会 有静态页面,如图 1 所示,其中还有我们的条款和条件。可以通过单击 register 然后再选择是否接受 用户协议来浏览相应页面。对于 ChangingThePresent 而言,我们从此页中删除了所有动态内容以便 Apache 能够对它进行缓存。按照我们 Apache 中配置的规则,这些内容永远都不会由 Rails 服务器生成 。因此,我根本无需对其考虑 Rails 缓存。

图 1. 用户协议

时间: 2024-10-25 14:16:24

真实世界中的Rails: Rails中的缓存的相关文章

如何将javascript中的变量值传递到rails代码中以便于使用?

问题描述 function generatePara(){ var a=10}如何将javascript中的变量值传递到rails代码中以便于使用?怎么把a的值传到Controller??class LookController < ApplicationController def form @user = params[:a] endend请大家指教,谢啦!问题补充:我想用 prototypeHelper 里面的方法来解决在解决这个问题,有是办法马?<%= link_to_remote:u

浅谈Rails 4 中Strong Parameters机制_ruby专题

要弄明白Rails 4 中Strong Parameters机制,首先我们要看看Rails3中的Parameters 在 Rails3 中创建或更新 Active Record 对象时,会有 Mass Assignment 安全问题.所以 Model 中需要列一个白名单,声明哪些属性可以被 parameter 的数据更新. Rails 3 # kings_controller.rb def create #{ name: 'David', sex:male, age: 31} @king = K

请问,在Rails应用中 如何 监听Startup 和Shutdown?

问题描述 请问,在Rails应用中 如何 监听Startup 和Shutdown?就像在 java web应用中使用servlet 的 listener一样,我需要在 Rails 中 监听 应用的启动和关闭,请问应该怎么实现呢?我知道,把一个 .rb文件 放在 APPconfiginitializers 目录下,Rails启动时会自动运行它,权且当这是 监听应用Startup的方法吧,那么 Shutdown 呢?在开发模式下,我总是 使用 Ctrl + C 结束 Rails应用, 我不知道 有什

Laravel框架中实现使用阿里云ACE缓存服务

这篇文章主要介绍了Laravel框架中实现使用阿里云ACE缓存服务,本文扩展了一个ACE缓存驱动,以便使用阿里云ACE缓存服务,需要的朋友可以参考下 之前我写了一篇在 Laravel 4 框架中使用阿里云 OCS 缓存的文章,介绍了如何通过扩展 Laravel 4 来支持需要 SASL 认证的阿里云 OCS 缓存服务.有网友问我,ACE 的缓存怎么在 Laravel 4 中使用.我本来觉得应该可以完全用相同的办法,后来自己尝试的时候才发现,ACE 的缓存差别非常大.所以再写一篇,介绍一下如何在

动态-thinkphp中的s函数是文件缓存吗?

问题描述 thinkphp中的s函数是文件缓存吗? 1.thinkphp中的s函数是文件缓存吗?这个s函数文件缓存是静态缓存吗? 2.memcache是动态缓存? 解决方案 S 函数只是1个缓存函数, 可以通过配置 使用 S 函数 对 文件 或 nosql 等 进行储存缓存.缓存都是静态的 没有动态的缓存. 只是 memcache 是存在内存,文件是物理存储.

ASP.NET MVC中使用jQuery时的浏览器缓存问题详解_实用技巧

介绍 尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议. 首先要做的事情是在服务器端支持HTTP GET,定义不同的URL输出不同的数据(MVC里对应的就是action).如果要使用同一个地址获取不同的数据,那就不对了,一个HTTP POST也不行因为POST不能被缓存.许多开发人员使用POST主要有2个原因:明确了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的时候可以被入侵). 缓存解释 jQuery全局对象里的ajax

Laravel框架中实现使用阿里云ACE缓存服务_php技巧

之前我写了一篇在 Laravel 4 框架中使用阿里云 OCS 缓存的文章,介绍了如何通过扩展 Laravel 4 来支持需要 SASL 认证的阿里云 OCS 缓存服务.有网友问我,ACE 的缓存怎么在 Laravel 4 中使用.我本来觉得应该可以完全用相同的办法,后来自己尝试的时候才发现,ACE 的缓存差别非常大.所以再写一篇,介绍一下如何在 Laravel 框架中使用阿里云 ACE 的缓存服务. 如何扩展 Laravel 的缓存驱动 在 Laravel 4 中使用 Cache::get($

asp.net开发中怎样去突破文件依赖缓存_实用技巧

在Web项目中可以使用Session,Application等来缓存数据,也可以使用Cache来缓存. 今天我们特别关注的是Cache缓存.Cache位于命名空间System.Web.Caching命名空间下,看到这里我们想到的是它在Web项目中使用. 说明:Cache 类不能在 ASP.NET 应用程序外使用.它是为在 ASP.NET 中用于为 Web 应用程序提供缓存而设计和测试的.在其他类型的应用程序(如控制台应用程序或 Windows 窗体应用程序)中,ASP.NET 缓存可能无法正常工

unity3-unity问一下用C#做脚本,在切换到别的场景中时这个脚本中的staic、new为什么还存在

问题描述 unity问一下用C#做脚本,在切换到别的场景中时这个脚本中的staic.new为什么还存在 unity3d这个脚本在这个场景(A)中,不过我切换到别的场景(B)中,前面场景(A)的staic.new为什么还存在.当我切换回来A时static定的变量值没变,如果清除了应该归0呀.切换场景不是这个场景就结束了吗,应该消除static.new的缓存的吧?? 解决方案 C#中的static代表一直存在内存中,不会被释放,所以如果你的数据不是整个生命周期都有效,那就不要随便static,至于n