在rails中可以将调入的所有js文件和css分别封装在一个单独的文件中,这样做的好处就是减少HTTP请求的数量,加快下载速度和减轻服务器的多次建立链接的压力, 由于我的开发平台是在windows上的,设置
<%= javascript_include_tag 'prototype', 'effects', :cache => true %>
之后是没问题的,但是当放在服务器(Linux+Lighttpd)上之后, 运行(生产环境)就会抛出500的错误,后来通过把
config.action_controller.consider_all_requests_local = true
设置为true后,才发现原来是权限问题,rails首次运行时会在javascripts文件夹下建立all.js的文件, 我的Lighttpd运行属主为非root用户,所以默认是没有权利建立文件的, 所以需要把javascripts文件夹的权限设置为Lighttpd运行属主有可写的权利, 对应的如果设置了stylesheets的cache为true的话也要把stylesheets文件夹的权限调整为可写的, 当然这需要看你的服务器的运行所有者了,如果你是以root运行lighttpd的,那么就应该不会遇到这样的问题,但使用root运行服务是不安全的
2008-10-02 12:19:17, 603 reviews
send to mailbox
花了点时间深入的研究了下rails内部的缓存机制,rails自带缓存机制主要有page cache, action cache和fragment cache,
其中page cache和action cache比较简单容易理解,fragment cache使用比较灵活,SHITou现在使用的就是fragment cache的机制。由于最近实在是太累了,关于fragment cache不多写了现在,先放上几个比较好的文章链接,等有时间了再详细整理出来吧
1.IBM开发者上面的文章,讲的很好的,扩展的也比较多,里面个人比较关注的是timed_fragment_cache这个插件,有时间了试试,1, 2
timed_fragment_cache这个插件,有时间了试试,1, 2
2.RailsEnvy上的2篇连载教程, 讲了上面的三种缓存策略的使用,其中第一篇教程中最后提到了使用page cache时服务器端要设置rewrite的问题,说的非常好. 1, 2
暂时写这么多现在.. 待续,,
看电影了
补充: 在使用片段缓存时如果缓存的对象中有表单或者是rails的link_to_remote ajax等辅助方法时,要注意,因为rails生成的html中都有验证的随机数,所以如果把这些内容缓存的话,会报错ActionController::InvalidAuthenticityToken,
解决办法就是要么对该类内容不缓存,要么就是在控制器application.rb中取消rails的表单及post请求的自动验证功能,不过这样肯定不好的,
2008-08-13 20:45:03, 569 reviews
just DO NOT support IE