Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 有没有办法在Rails 3.0中生成精灵(运行时精灵)?_Ruby On Rails 3_Caching_Css Sprites - Fatal编程技术网

Ruby on rails 3 有没有办法在Rails 3.0中生成精灵(运行时精灵)?

Ruby on rails 3 有没有办法在Rails 3.0中生成精灵(运行时精灵)?,ruby-on-rails-3,caching,css-sprites,Ruby On Rails 3,Caching,Css Sprites,我的项目中的任何HTML页面都包含两种类型的图像: 系统定义的图像,例如徽标、图标和按钮 用户自定义图像,如用户的个人资料图像或公司徽标等 在列表页面上,通常呈现两种类型的图像的组合。现在我想要的是,使用Rails,根据用户图像列表或给定页面中呈现的图标/徽标列表,在运行时将所有图像编译到一个或两个大型Sprite上。通过这样做,我可以避免使用img标记和深度嵌套的锚,这在传统上是存在于传出html中的 通过后台CSS发送用户图像比img标签快X倍,让我保持html/haml的整洁。如果有人能在

我的项目中的任何HTML页面都包含两种类型的图像:

  • 系统定义的图像,例如徽标、图标和按钮
  • 用户自定义图像,如用户的个人资料图像或公司徽标等
  • 在列表页面上,通常呈现两种类型的图像的组合。现在我想要的是,使用Rails,根据用户图像列表或给定页面中呈现的图标/徽标列表,在运行时将所有图像编译到一个或两个大型Sprite上。通过这样做,我可以避免使用img标记和深度嵌套的锚,这在传统上是存在于传出html中的


    通过后台CSS发送用户图像比img标签快X倍,让我保持html/haml的整洁。如果有人能在运行时告诉我spring时的缓存问题,那也太好了?(如果这个东西存在,首先。)

    我不知道用Ruby编程创建精灵的方法。您可能可以使用库进行图像处理(也许),但这似乎是相当低的级别。如果你发现有什么可以做到这一点,请随时通知我们

    CSS精灵是一个图像,因此动态创建的图像通常采用缓存规则。如果不小心,浏览器将继续使用缓存副本,用户将永远看不到sprite的新版本。解决这一问题的几种方法是:

    • 使用缓存控制HTTP标头字段为映像设置合理的超时值。我尝试过这种方法,但无法使其工作

    • 每次重新创建图像时为其指定唯一的名称。在此场景中,映像被设置为永不过期。如果重新生成,将为其指定一个新名称,从而导致浏览器对其发出新请求。我成功地使用了它。Rails对样式表和javascript文件也做同样的事情

    • 另一种选择可能是使用。每个版本都有一个新的、唯一的ETag,浏览器使用它来确定是应该使用缓存副本还是获取最新版本。我以前没有用过这个,但它似乎适合你的问题


    .

    我不知道用Ruby编程创建精灵的方法。您可能可以使用库进行图像处理(也许),但这似乎是相当低的级别。如果你发现有什么可以做到这一点,请随时通知我们

    CSS精灵是一个图像,因此动态创建的图像通常采用缓存规则。如果不小心,浏览器将继续使用缓存副本,用户将永远看不到sprite的新版本。解决这一问题的几种方法是:

    • 使用缓存控制HTTP标头字段为映像设置合理的超时值。我尝试过这种方法,但无法使其工作

    • 每次重新创建图像时为其指定唯一的名称。在此场景中,映像被设置为永不过期。如果重新生成,将为其指定一个新名称,从而导致浏览器对其发出新请求。我成功地使用了它。Rails对样式表和javascript文件也做同样的事情

    • 另一种选择可能是使用。每个版本都有一个新的、唯一的ETag,浏览器使用它来确定是应该使用缓存副本还是获取最新版本。我以前没有用过这个,但它似乎适合你的问题


    .

    我在一个博客上看到@dhh的评论,说Rails 3.1这次将“错过css spriting”。不知道那是什么意思。但是有一种新的ruby宝石叫做active_assets。它可以让你通过rake任务生成精灵和精灵的样式表。我在一个博客上看到@dhh的评论,说Rails 3.1这次将“错过css精灵”。不知道那是什么意思。但是有一种新的ruby宝石叫做active_assets。它允许您使用rake任务生成精灵和精灵的样式表。