10、清除你的局部或整体缓存
(原文写的太啰嗦)当你采用了缓存技术时,有时候可能在增删改一个model的时候,需要过期所有的页面缓存,比如当你的所有页面都包含一个最新文章列表的时候。
一个方法是删除你所有的缓存文件,首先可以像上面介绍的那样,移动你的缓存目录,然后按照下面的方法写一个sweepers
只需一个简单的调用,就可以删除你每一个controller或action缓存。
(译者:有必要也会翻译一下上面的这篇文章《Modules, Mixins and Inheritance》,直译 为 组件,混入,和继承,但是这样的计算机编程属于还是用英文的好)
11、更高级的缓存?
页面缓存对于像deyeb这样的大型网站,是比较复杂的。(译者:要了朕的亲命了,不然也不会翻译写外文寻找光明了!)下面还有一些其他的方法
Rick Olson (aka Technoweenie)写了个 Referenced Page Caching Plugin ,可以使用数据库表进行页面缓存。
Max Dunn 写了篇非常好的文章,Advanced Page Caching ,教你如何根据用户的角色,使用cookies进行缓存应用的。
最后,貌似没有发现页面缓存xml文件的好方法,Mike Zornek的wrote about his problems 指出了一个处理方法。Manoel Lemos way to do it using action caching
我们将在下一章介绍action缓存。
12、如何测试缓存
没有现成的方法,Luckily Damien Merenne 有一个 swank plugin ,看一下吧。
13、本章结束
页面缓存应该在你的应用中广泛的使用,毕竟它可以提供很快的相应速度。但是当你的项目始终需要进行用户身份验证和身份显示的时候,这样的处理就有局限了!
(原文写的太啰嗦)当你采用了缓存技术时,有时候可能在增删改一个model的时候,需要过期所有的页面缓存,比如当你的所有页面都包含一个最新文章列表的时候。
一个方法是删除你所有的缓存文件,首先可以像上面介绍的那样,移动你的缓存目录,然后按照下面的方法写一个sweepers
class BlogSweeper < ActionController::Caching::SweeperFileUtils.rm_r 将会删除你所有的缓存文件,当然你也可以逐步删除你的缓存,比如当你想删除/public/blog下面的缓存时,可以:
observe Post
def after_save(record)
self.class::sweep
end
def after_destroy(record)
self.class::sweep
end
def self.sweep
cache_dir = ActionController::Base.page_cache_directory
unless cache_dir == RAILS_ROOT+"/public"
FileUtils.rm_r(Dir.glob(cache_dir+"/*")) rescue Errno::ENOENT
RAILS_DEFAULT_LOGGER.info("Cache directory '#{cache_dir}' fully sweeped.")
end
end
end
cache_dir = ActionController::Base.page_cache_directory如果你觉得File Utilities对你实在难于把握,你可以尝试一下 Charlie Bowman 的 broomstick plugin
FileUtils.rm_r(Dir.glob(cache_dir+"/blog/*")) rescue Errno::ENOENT
只需一个简单的调用,就可以删除你每一个controller或action缓存。
(译者:有必要也会翻译一下上面的这篇文章《Modules, Mixins and Inheritance》,直译 为 组件,混入,和继承,但是这样的计算机编程属于还是用英文的好)
11、更高级的缓存?
页面缓存对于像deyeb这样的大型网站,是比较复杂的。(译者:要了朕的亲命了,不然也不会翻译写外文寻找光明了!)下面还有一些其他的方法
Rick Olson (aka Technoweenie)写了个 Referenced Page Caching Plugin ,可以使用数据库表进行页面缓存。
Max Dunn 写了篇非常好的文章,Advanced Page Caching ,教你如何根据用户的角色,使用cookies进行缓存应用的。
最后,貌似没有发现页面缓存xml文件的好方法,Mike Zornek的wrote about his problems 指出了一个处理方法。Manoel Lemos way to do it using action caching
我们将在下一章介绍action缓存。
12、如何测试缓存
没有现成的方法,Luckily Damien Merenne 有一个 swank plugin ,看一下吧。
13、本章结束
页面缓存应该在你的应用中广泛的使用,毕竟它可以提供很快的相应速度。但是当你的项目始终需要进行用户身份验证和身份显示的时候,这样的处理就有局限了!
第一部分结束。休息一下开始第三部分吧。


