`
weskycn
  • 浏览: 31407 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cache_fu插件使用方法

阅读更多

 

Chris 曾经在Gamespot工作,他在这里谈论游戏。在过去的一年党中,有无数的年轻人在不停地刷新这个网站,而此网站依然坚挺。他们每天要处理50M地页面,没有down掉。他们用Memcache做到了这点。

Memcache 是个分布式的hash,由Livejournal开发。

你会选择用Memcache吗?

Rails and Memcache

用Fragments, Actions, Sessions, Objects缓存, 你可以使用:

  • memcache-client (by Robot-coop guys/Eric Hodel). Marshal.unload is 40 times faster than Object.new/loading from the database.
  • CachedModel – integration with ActiveRecord
  • Fragment Cache Store
  • Memcache session store

…或者…

cache_fu插件

或者叫 acts_as_cached 2.0。它覆盖以上讨论的所有Objects,只需要配置一个YAML 文件(config/memcached.yml).提醒:不要在服务器配置文件中使用names.而是要用IPs,为了避免BIND和每次连接都连接数据库.

  • get_cache
  • expire_cache

你需要的只有这些--你过你用set_cache,你可能不清楚改插件是如何工作的。要在在after save钩子上使用缓存失效机制。例如:

class 



Presentation



 <

 ActiveRecord

::

Base


  acts_as_cached


  after_save

 :expire_cache


end






再如:

class Presentation < ActiveRecord :: Base
  acts_as_cached :conditions => ' published = 1 '
end

Cached-scoped-finders (译者注:不知如何翻译).。这个用法将会把自定义地find方法挪到model上,然后在其中包装一些缓存机制,cache_fu插件通过AR::Base方法将这个功能有机结合起来。

class 



Topic



 <

 ActiveRecord

::

Base


  def 

self.weekly_popular


    Topic

.

find

 :all

,

 ...


  end


end



Topic

.

cached

(

:weekly_popular

)






alias_method_chain方法将date加入到缓存键:

def 



self.cache_key_with_date



(



id



)




  ...


end



class 

<<

 self


  alias_method_chain

 :cache_key

,

 :date


end






用ID加载缓存:由Topic.find(1, 2, 3)转变为Topic.get_cache(1, 2, 3),这样可以将缓存数据放入memcached,并且在以后访问他们。

user_ids



 =

 @topic

.

posts

.

map

(&

:user_id

).

uniq


@users

 =

 User

.

get_cache

(

user_ids

)






你也可以缓存关联,因此,你可以通过memcache来导航关联。

缓存重写

class 



ApplicationController



 <

 ActionController

::

Base


  before_filter

 :set_cache_override


  def 

set_cache_override


    ActsAsCached

.

skip_cache_gets

 =

 !!

params

[

:skip_cache

]


  end


end






reset_cache:重置缓存(这段不知道改怎么翻译了:reset_cache : Slow, uncached operations can sometimes queue up and wedge a site. Instead, issue cache resets on completion of a request, rather than expiring beforehand. That way, requests that continue to pile up will still use the cached copy until the rebuild is complete.)

class 



Presentation



 <

 ActiveRecord

::

Base


  after_save

 :reset_cache


end






版本:当修改代码后地缓存方式

class 



Presentation



 <

 ActiveRecord

::

Base


  acts_as_cached

 :version

 =>

 1


end






部署:Chris推键是一能够Monit部署以保证Memcache服务器高效率工作。(译者注:不知其他服务器效率如何)

livketama:在不使缓存实效地情况下重新部署Memcache服务器。

问题: Page caching? Nginx 会使用本地Memcache page caching,即在rails 主机之外。

后记:由于本人最近正在研究cache_fu插件地使用方法,本篇文章会持续更新,敬请关注。欢迎发表您对该插件的理解。

分享到:
评论
3 楼 songfantasy 2012-06-03  
文章格式太乱了。。。
2 楼 rubyonrailscn.org 2008-04-10  
把 reset_cache 当作一个异步操作来用。这样虽然可能会牺牲页面的及时刷新率,但是保证了请求的响应率
1 楼 rubyonrailscn.org 2008-04-10  
reset_cache:重置缓存(这段不知道改怎么翻译了:reset_cache: Slow, uncached operations can sometimes queue up and wedge a site. Instead, issue cache resets on completion of a request, rather than expiring beforehand. That way, requests that continue to pile up will still use the cached copy until the rebuild is complete.)

->

reset_cache:重置缓存:
需要长处理时间的未缓存操作有时会堆积起来挤垮一个网站。想法,在完成一个请求之后重置缓存而不是在完成请求前将缓存过期。这样做请求可以不断使用已经缓存的内容直到缓存重建完成为止。


相关推荐

    ngx_cache_purge应用插件

    ngx_cache_purge应用插件是针对Nginx服务器的一个扩展模块,主要功能是实现缓存的清理和刷新。在Web服务器环境中,缓存是提高网站性能的重要手段,它能够存储频繁访问的静态资源,减少对后端服务器的压力。然而,当...

    ngx_cache_purge_2.4.2.tar.gz

    这个版本2.4.2的压缩包包含了ngx_cache_purge模块的所有源代码及相关文件,以便开发者在自己的Nginx环境中集成和使用。 Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,广泛应用于互联网服务。其内置的...

    nginx缓存清除插件ngx_cache_purge.zip

    ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_...示例:nginx扩展模型ngx_cache_purge缓存清理插件

    详解Oracle数据库的db_cache_size和granule_size

    ### Oracle数据库中的db_cache_size与granule_size详解 #### 一、db_cache_size参数解析 **1. 参数定义** - **名称**: `DB_CACHE_SIZE` - **类型**: 大整数(Biginteger) - **语法格式**: `DB_CACHE_SIZE = ...

    nginx_cache_purge.zip

    从提供的文件名"ngx_cache_purge-2.3.tar.gz"和"ngx_cache_purge-master.zip"来看,这是插件的不同版本。通常,我们可以按照以下步骤进行安装: 1. 解压下载的源码包,例如:`tar -zxvf ngx_cache_purge-2.3.tar.gz...

    ngx_cache_purge-2.1.tar.gz

    在实际使用中,可以使用HTTP DELETE方法发送一个请求到Nginx服务器,附带特定的URL,ngx_cache_purge插件会根据配置规则清除对应的缓存条目。例如,一个简单的示例配置可能如下: ```nginx http { ... proxy_...

    Mycat处理连接数据库8.0以上程序报错query_cache_size

    然而,当Mycat与MySQL 8.0及以上版本配合使用时,可能会遇到一些兼容性问题,其中“query_cache_size”报错就是典型的例子。 在MySQL 8.0中,查询缓存功能被默认禁用,并且在某些版本中被完全移除。这是由于MySQL...

    解决mycatJDBC8驱动连接Mycat1.6报错 Unknown system variable 'query_cache_size'

    标题中的问题涉及到的是在使用Mycat数据中间件时,尝试使用JDBC 8驱动连接到Mycat 1.6版本时遇到的一个错误:`Unknown system variable 'query_cache_size'`。这个问题出现的原因在于MySQL 8.0版本中移除了`query_...

    cache.rar_cache verilog_cache vhdl_verilog cache_verilog cac_vh

    Verilog和VHDL是实现这一目标的强大工具,而“cache.rar_cache verilog_cache vhdl_verilog cache_verilog cac_vh”这个标题和相关标签暗示了文件集合可能提供了从理论到实践的全面缓存设计资源。通过学习和研究这些...

    ngx_cache_purge-1.3.tar.gz

    ngx_cache_purge-1.3.tar.gz 是一个用于Nginx服务器的插件包,它主要功能是实现缓存清理。这个插件使得管理员或应用能够动态地清除Nginx的HTTP缓存,以确保用户获取到最新的内容。在了解这个压缩包之前,我们先来...

    ngx_cache_purge-2.0.tar.gz

    要使用ngx_cache_purge-2.0,你需要按照以下步骤操作: 1. **安装依赖**:确保你的系统上已经安装了Nginx的开发库和其他必要的编译工具。 2. **解压文件**:使用`tar -zxvf ngx_cache_purge-2.0.tar.gz`命令解压...

    Cache_enable.zip_ADI_Blackfin_adi blackfin_blackfin cache _cache

    在标签“adi blackfin adi_blackfin blackfin_cache_ cache_enable”中,关键词“adi_blackfin”是指ADI公司的Blackfin处理器,而“blackfin_cache”则明确了与Blackfin处理器缓存有关,"cache_enable"再次强调了这...

    联想expresscache_setup_64

    expresscache安装程序 ExpressCache软件会自动在mSATA SSD硬盘上创建必要的缓存分区

    05-cache_v1.rar_cache_v1_s3c4510

    本文档将深入探讨S3C4510开发板的使用,以及与其密切相关的Cache_v1机制,旨在为开发者提供详尽的设计资料和实践指导。 首先,S3C4510是一款基于ARM7TDMI架构的RISC(精简指令集计算机)处理器,具有高性能、低功耗...

    cpu_cache_interrupt.zip_cache_cache verilog_cache 中断_cpu流水_inter

    "cpu_cache_interrupt.zip_cache_cache verilog_cache 中断_cpu流水_inter"这个压缩包文件主要涉及到以下几个关键概念:Cache、Verilog、中断以及CPU流水线。接下来,我们将深入探讨这些主题。 1. **Cache**: Cache...

    IE_Cache_Recovery.rar_IE Cache Recove_IE Cache Recovery_IE cache

    "IE_Cache_Recovery"工具的使用步骤如下: 1. **安装与运行**:下载并解压"IE_Cache_Recovery.rar",其中包含的"IE_Cache_Recovery.exe"是主程序。双击运行,软件界面通常会提示用户选择要扫描的IE缓存目录。 2. *...

    如何设置Squid Cache_mem大小.docx

    在设置完 Cache_mem 和 Cache_dir 之后,需要使用 squid -z 命令来使缓存目录生效。 最后,需要设置允许所有人访问代理服务器。可以使用 http_access allow all 参数来实现这一点。 http_access allow all 在...

    利用 Cache_Lite代替codeigniter中的cache功能

    本文将深入探讨如何使用Cache_Lite替代CodeIgniter内置的缓存功能,以及这样做的潜在好处。 Cache_Lite是PHP的一个轻量级缓存库,由Fabien Potencier创建。它允许开发者在本地文件系统中存储数据,以快速访问经常...

    fsl_85xx_cache_sram.rar_cache_qoriq

    而`fsl_85xx_cache_sram.h`作为头文件,通常会包含函数声明、宏定义以及结构体定义,这些都是为了在其他模块中正确地调用和使用缓存管理功能。例如,它可能定义了与QorIQ处理器特定的缓存操作相关的函数原型,如`...

Global site tag (gtag.js) - Google Analytics