RubyonRails Page Cache 的扩展名问题
来源:百度文库 编辑:神马文学网 时间:2024/04/29 22:52:22
RubyonRails Page Cache 的扩展名问题
@由DIrk 发表于 2007-01-12 Friday
RubyonRails的 Page Cache 默认是将缓存的文件报存到 Base.page_cache_directory 目录中(默认是 Rails 项目的public 目录);并且,在默认设置下会冠以 .html 扩展名,但这里有一个特殊的处理:如果你请求的 URL 地址最后部分包含了“.”符号,Rails 就不会增加这个缓存扩展名,而是直接根据请求的文件名进行保存。比如我的一篇网志中设置了这个标签:docs.dirk.sh,这个时候,Rails会将 /tag/docs.dirk.sh 直接缓存为 /public/tag/docs.dirk.sh文件,而不是我所期望的 /public/tag/docs.dirk.sh.html;这个扩展名的差别,致使 Web 服务器向浏览器发送错误的 MIME 头,使用户在访问被缓存的 /tag/docs.dirk.sh 页面时,可能直接显示源代码或者提示下载。
研究一下 RoR 的源代码,从 action_controller/caching.rb 文件中找到以下代码:
def page_cache_file(path)name = ((path.empty? || path == "/") ? "/index" : URI.unescape(path))name << page_cache_extension unless (name.split(‘/‘).last || name).include? ‘.‘return nameend
可以看到,Rails对缓存文件的名称进行了检查,如果名称中包含“.”符号,那么不再追加缓存文件扩展名(.html)。从某种程度上来说,这是一种正确的思路,因为用户有可能就是期望缓存一个特殊格式的文件,比如 .pdf 文档或者 .png 图片等,但对于我的 Blog 却是得到了错误的结果。
我觉得,更合理的方式是为 action_controller/caching.rb 增加一个开关,根据这个开关来决定是否检测文件名中包含“.”而不再追加扩展名,这个开关应该象其他参数一样,可以通过环境设置文件进行指定。
目前,我是偷懒,直接修改了 action_controller/caching.rb 源代码,等有时间再写一个完善一些的 patch:
def page_cache_file(path)name = ((path.empty? || path == "/") ? "/index" : URI.unescape(path))name << page_cache_extensionreturn nameend
标签:rubyonrails,page cache,extension
@由DIrk 发表于 2007-01-12 Friday
RubyonRails的 Page Cache 默认是将缓存的文件报存到 Base.page_cache_directory 目录中(默认是 Rails 项目的public 目录);并且,在默认设置下会冠以 .html 扩展名,但这里有一个特殊的处理:如果你请求的 URL 地址最后部分包含了“.”符号,Rails 就不会增加这个缓存扩展名,而是直接根据请求的文件名进行保存。比如我的一篇网志中设置了这个标签:docs.dirk.sh,这个时候,Rails会将 /tag/docs.dirk.sh 直接缓存为 /public/tag/docs.dirk.sh文件,而不是我所期望的 /public/tag/docs.dirk.sh.html;这个扩展名的差别,致使 Web 服务器向浏览器发送错误的 MIME 头,使用户在访问被缓存的 /tag/docs.dirk.sh 页面时,可能直接显示源代码或者提示下载。
研究一下 RoR 的源代码,从 action_controller/caching.rb 文件中找到以下代码:
def page_cache_file(path)name = ((path.empty? || path == "/") ? "/index" : URI.unescape(path))name << page_cache_extension unless (name.split(‘/‘).last || name).include? ‘.‘return nameend
可以看到,Rails对缓存文件的名称进行了检查,如果名称中包含“.”符号,那么不再追加缓存文件扩展名(.html)。从某种程度上来说,这是一种正确的思路,因为用户有可能就是期望缓存一个特殊格式的文件,比如 .pdf 文档或者 .png 图片等,但对于我的 Blog 却是得到了错误的结果。
我觉得,更合理的方式是为 action_controller/caching.rb 增加一个开关,根据这个开关来决定是否检测文件名中包含“.”而不再追加扩展名,这个开关应该象其他参数一样,可以通过环境设置文件进行指定。
目前,我是偷懒,直接修改了 action_controller/caching.rb 源代码,等有时间再写一个完善一些的 patch:
def page_cache_file(path)name = ((path.empty? || path == "/") ? "/index" : URI.unescape(path))name << page_cache_extensionreturn nameend
标签:rubyonrails,page cache,extension
RubyonRails Page Cache 的扩展名问题
VC的文件扩展名
文件扩展名的知识
Buffer和Cache的区别
HTTP/1.1 Cache-Control的理解
电脑系统快捷方式的扩展名(后缀)
Linux 文件类型 及文件的扩展名
Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别
ruby gems 安装不上 配置gem 源 - 夜鸣猪的RubyOnRails空间 - JavaEye技术网站
通过Cache机制实现通用的配置管理模块
[推荐][6.24]最详细的文件扩展名大全
java cache
java cache
Page.ClientScript.RegisterStartupScript的用法实例
如何调整页码处的{page}
文件扩展名
文件扩展名
扩展名二
扩展名三
扩展名一
扩展名后缀
文件扩展名
创新参选:SDS-PAGE的两点改进 -SDS-PAGE|配胶|脱色|创新-生物通
Void Page Blog Archive WordPress 2.3 的可折叠式分...