周六在SOR(Shanghai On Rails 1st)上有点紧张,感觉讲的很是不好。这个也是我第一次public的场面上做topic,以前给同事培训,从没有过这样的感觉
看来,俺还需要锻炼锻炼,下次一定不会这么差劲的状态了
在最后的PPT中提到四个插件
1:sweeper generator (已经说过了,
http://mmm.iteye.com/blog/119332)
2:timed_fragment_cache
3:cache_fu
4:cached_model
还是很不错的,一一的说明下,第一篇,最简单的timed_fragment_cache
在清除Rails缓存的策略中,我们常采用以下两条原则
1:基于Model的状态
2:基于时间的有效期
timed_fragment_cache 就是一个基于时间的有效期的插件,
一:Install
ruby script/plugin install http://svn.livsey.org/plugins/timed_fragment_cache
二:Usage
1:在views中,和通常写法差不多,只是多了个失效时间的属性
<% cache 'fragment_name', 10.minutes.from_now do %>
the cached fragment which does something intensive
<% end %>
以fragment_name为名称的片段缓存会在10分钟后失效,当再次访问的时候时间如果跟第一次生成缓存的时间相差大于10,那么会清除当前的缓存,并重新创建。
2:在controller中
when_fragment_expired 'fragment_name', 10.minutes_from_now do
# some intensive code
end
和上面一样的效果
三:Dive into
使用很简单,我们现在再来看下源码,huhu,一共就一个timed_fragment_cache.rb,一样的简单。
代码覆盖了rails中的cache_erb_fragment
def cache_erb_fragment(block, name = {}, options = nil, expiry = nil)
unless perform_caching then block.call; return end
fragment = get_fragment(name)
#.... 这里多了这一段
#.... 首先判断是否采用了时间限制,是否已经缓存,如果有时间限制,并且没有缓存当前name的fragment的话
#.... 则缓存以fragment_cache_key(name) + '_meta'为key,缓存当前时间的信息
if expiry && !fragment
expire_and_write_meta(name, expiry)
end
#..... 下面一样写入Fragment Cache ...
end
我们再来看一下读取fragment的代码,看它是如何判断时间过期的
def get_fragment(name)
#...
#... 获取有效时间
#... 如果有,并且已经大于当前的时间,则返回nil,否则返回缓存的片段代码
expires = expiry_time(name)
return expires && expires > Time.now ? fragment : nil
end
分享到:
相关推荐
**Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...
标题提到的"用于过滤英文脏话的 Rails 插件 gem"正是为了解决这个问题。这个插件允许开发者通过简单的配置,对输入的文本进行检查和替换,确保网站内容的清洁度和专业性。 这个插件名为`profanity_filter`,它是一...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
Rails_3_Cheat_Sheets.pdf
本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
Rails 管理员成为用户 ... rails_admin_become_user必须在rails_admin之后rails_admin才能正常工作。 在您的config/initializers/rails_admin.rb初始化程序中添加配置: RailsAdmin . config do | config |
Awesome Rails Gem 是一个广泛收录了Rails开发中常用、实用、有趣的Gem的列表,旨在帮助开发者提高开发效率和代码质量。这个中文版的Awesome Rails Gem列表,为国内开发者提供了一个方便的参考资源,使他们能够更好...
gem 'rails_admin_image_manager' 跑步 $ bundle install 安装RailsAdmin_ImageManager $ rails generate rails_admin_image_manager:install 将上传文件路径添加到您的.gitignore文件中 /public/rails_admin_...
Agile Web Development with Rails 1-14节_ppt(老师发的修正版)
gem 'rails_admin_content_builder' 运行生成器并进行迁移 rails g rails_admin_content_builder rake db:migrate 在app / assets / application.scss中添加样式 * = require rails_admin_content_builder 用法 ...
《Rails Recipes with Source Code》是一本专注于Ruby on Rails框架实践技巧和源代码解析的书籍。Rails是基于Ruby语言的Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念和“开发人员的...
在Ruby on Rails中,插件通常是一组自包含的代码,可以扩展框架的功能或者提供新的行为。它们可以包括模型、控制器、视图、迁移、甚至是Rake任务等。在这个案例中,“login_engine”可能是包含了用户登录所需的所有...
自述文件版本和设置$ ruby -vruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-darwin18]$ rails -... $ rails new rails_model_test_hello_world -T -m ~/rtfb_template.rb$ cd rails_model_test_hello_world$ rail
6. **Rakefile和init.rb**: Rakefile用于定义任务,如安装或更新插件,而init.rb是Rails初始化脚本,负责加载插件。 7. **版本控制(.svn)**: 这个文件可能表示插件曾使用Subversion作为版本控制系统。现代项目更...
标题中的"plug_rails_cookie_session_store"是一个针对Rails框架的会话存储插件,它旨在在Elixir的Phoenix框架中实现与Rails相兼容的会话管理。这个插件的目的是让那些从Rails迁移到Elixir Phoenix的应用程序能够...
安装要启用rails_admin_history_rollback ,请将以下内容添加到您的Gemfile确保将其添加到rails_admin之后: gem 'rails_admin'gem 'rails_admin_history_rollback' 不用说,此插件还需要paper_trail gem。...