`
xxj
  • 浏览: 437635 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[Rails 常用插件简介]Sweeper Generator

阅读更多
cache是系统中必不可少的东西,那么cache的有效期,何时清除过时的cache就显得更加有意思的一个话题。Sweeper Generator 顾名思义是一个Generator,清除过时的cache

0:) cache
Rails中目前有三种cache
caches_pages
caches_action
caches_fragment

cache还不懂?那就先收藏着吧,等下次有时间开个专题讨论一下cache,这里就不废话了。

1:) 安装
ruby script/plugin install http://topfunky.net/svn/plugins/sweeper


2:) 使用
运行
ruby script\generate

可以看到sweeper
Installed Generators
  Plugins: sweeper


我们使用cache Fragment在页面上缓存论坛分类
<% cache(cache_key('categories')) do -%>
....
<%end%>


启动server,浏览页面,第一次运行会看到
Cached fragment: localhost:3000/cache/categories (0.00000)

同时在cache目录下找到 categories .cache文件,打开浏览,你会看到正式你浏览页面的html文件

刷新页面,再次浏览,会看到
Fragment read: localhost:3000/cache/categories (0.00000)


执行查询分类的sql已经不在运行了,仅仅是读取cache的文件而已。

ok,转到后台,新增分类,再转前台,刷新
Fragment read: localhost:3000/cache/categories (0.00000)


刚才添加的新分类怎么没了??

是缓存的原因,当前的页面片段存在缓存,而我们刚才新增加的分类后,并没有删除过时的cache,手工删除categories.cache,再删除
Cached fragment: localhost:3000/cache/categories (0.00000)

OK,成功了。

可是这样繁琐了点:(

不怕:) rails自有利器,该Observer发挥作用了 (Observer是什么?OH, NO,这个,建议你没事看看设计模式,简单点说就是一个观察着模式),而Sweeper用的也是这个

先来看一下Sweeper Generator的usage
./script/generate sweeper SweeperName callback1 callback2


OK,我们来生成我们想要的东西
ruby script/generate sweeper Record after_save after_update after_destroy


生成
class RecordSweeper < ActionController::Caching::Sweeper
    def after_save(record)
    end

    def after_update(record)
    end

    def after_destroy(record)
    end
end


添加我们观察的对象
observe Forum


当新建forum时候,我们删除掉过时的cache
def after_save(record)
    expire_fragment(cache_key('categories'))
end


在你的environment中添加
config.active_record.observers =  :record_sweeper

现在转到后台,新增分类测试下。当提交时,会发现console多了几条信息

Expired fragment: localhost:3000/cache/categories (0.00000)

cache已经清楚了

再次浏览index会发现重新生成了cache
Cached fragment: localhost:3000/cache/categories (0.00000)

分享到:
评论

相关推荐

    [Rails 常用插件简介]CRUD Generator 2

    **Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...

    ruby on rails 常用插件下载

    在这个“ruby on rails 常用插件下载”中,提到的是一个与多线程相关的插件,可能用于提高应用程序的性能和并发处理能力。 在 Ruby on Rails 中,多线程是一种处理并发请求的方式,尤其在现代硬件支持多核处理器的...

    VIM的Rails编辑插件rails.vim.zip

    rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。 安装方法: 拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. ...

    Ruby on Rails插件

    Ruby on Rails插件是Rails框架的核心扩展机制,用于弥补Rails本身功能的不足,提供开发者所需的额外特性或功能。Rails插件允许开发人员自定义和增强Rails的任何部分,并且能够以封装和重用的方式与其他开发者共享。...

    eclipse的ruby on rails开发插件RadRails

    **Ruby on Rails 开发环境构建:Eclipse与RadRails 插件详解** 在现代软件开发领域,Ruby on Rails(简称Rails)作为一个强大的Web应用程序框架,因其简洁、高效的特性深受开发者喜爱。而Eclipse,作为一款功能强大...

    rails 2.0.2 分页 需另外下载插件

    这个插件允许你在Rails应用中轻松地对数据进行分页显示,提高用户体验并减轻服务器压力。 **1. will_paginate插件介绍** `will_paginate`是Rails社区中非常流行的一个分页解决方案,它提供了简洁的API和强大的功能...

    关于Rails登录和验证插件http_authentication restful-authentication

    6. **Rakefile和init.rb**: Rakefile用于定义任务,如安装或更新插件,而init.rb是Rails初始化脚本,负责加载插件。 7. **版本控制(.svn)**: 这个文件可能表示插件曾使用Subversion作为版本控制系统。现代项目更...

    Rails3常用命令行命令

    在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个Rails项目是开发的起点。你可以使用以下命令创建一个新的工程: ```bash rails new 工程名 ``` 这会生成一个包含所有...

    Rails插件收集

    在博文“Rails插件收集”中,作者可能分享了一些常用的Rails插件,比如用于日志分析的`better_errors`和`binding_of_caller`,性能监控的`bullet`,自动化测试的`rspec-rails`,以及数据库查询优化工具`annotate`等...

    常用RAILS学习网站

    收集了常用RAILS学习的网址 收集了常用RAILS学习的网址

    ruby on rails for eclipse开发插件

    ruby on rails for eclipse开发插件

    awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版.zip

    Awesome Rails Gem 是一个广泛收录了Rails开发中常用、实用、有趣的Gem的列表,旨在帮助开发者提高开发效率和代码质量。这个中文版的Awesome Rails Gem列表,为国内开发者提供了一个方便的参考资源,使他们能够更好...

    使用sitemap_generator来为rails网站生成Sitemap

    这篇博文将讨论如何使用`sitemap_generator` gem在Rails应用中实现这一功能。 首先,让我们了解什么是Sitemap。Sitemap是一个XML文件,它列出了网站的所有页面,包括URL、更新频率和页面重要性等信息。这有助于搜索...

    Ruby on Rails 入门级简介

    ### Ruby on Rails 入门级简介 #### 一、Ruby on Rails 概述 **Ruby on Rails**(简称 Rails 或 RoR)是一种基于 Ruby 语言的 Web 应用框架,它采用了模型-视图-控制器(MVC)架构模式。Rails 由 David Heinemeier...

Global site tag (gtag.js) - Google Analytics