加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 在Rails 3.1中以开发模式启用图像缓存

发布时间:2020-12-17 03:21:18 所属栏目:百科 来源:网络整理
导读:在Rails 3.1开发模式中(使用资产管道时),使用响应标头“Cache Control:must-revalidate”提供由资产/图像提供的图像. 这意味着Google Chrome(以及看似只有Chrome)会尝试多次重新获取图片 – 即使在单页视图中也是如此.这导致了通过JavaScript进行DOM操作的
在Rails 3.1开发模式中(使用资产管道时),使用响应标头“Cache Control:must-revalidate”提供由资产/图像提供的图像.

这意味着Google Chrome(以及看似只有Chrome)会尝试多次重新获取图片 – 即使在单页视图中也是如此.这导致了通过JavaScript进行DOM操作的所有方式的棘手问题.仅举几例:

> jQuery UI Draggable有时会与鼠标光标有明显的偏移
>添加或删除引用图像的CSS类将闪烁或调整大小,同时图像请求(始终返回304未修改)正在进行中.
>附加或替换包含图像的HTML节点将触发更多图像提取,这将导致其下方的整个节点树闪烁,因为Chrome等待每个图像的304响应.

我完全可以理解,对于开发服务器来说,这是一个合理的事情.我甚至可以理解,即使在单页视图中,Chrome也拒绝缓存图像,这是非常合理的.

那么,有没有办法改变Rails应用于开发中的图像响应的缓存控制头?

更新:正如几个人所建议的那样,一个更有趣的问题是,当没有其他浏览器出现时,为什么Chrome会尝试在网页浏览中多次重新获取图片? (为什么这不会给其他开发者带来问题?)

更新x2:我不打算将此作为答案提交,因为它只是一个适合我的目的的解决方法,但我们能够通过预编译资产然后丢弃预编译的CSS&来解决这个问题. JS. (这将要求sprockets调试在development.rb中变为false.)

rake assets:precompile
cd public/assets
find . -name "*.js*" -exec rm -rf {} ;
find . -name "*.css*" -exec rm -rf {} ;

解决方法

http://code.google.com/p/chromium/issues/detail?id=102706

这似乎是chrome的文档问题.我遇到了同样的问题:添加或删除引用图像的CSS类将闪烁或调整大小,同时图像请求(将始终返回304未修改)正在进行中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读