1

我在 Rails 3.x 上的 JRuby 中有一个小应用程序,它需要返回存储在公用文件夹之外的文件系统中的用户图像。我认为使用单独的控制器来响应这些请求将是检索它们的最佳方式。它适用于 2 或 3 张图像,但在显示超过 6 或 7 张图像的页面上,它返回 5 左右然后停止。其余的图像永远不会出现。我在某处读到它可能无法正确关闭响应,但老实说,我不知道这意味着什么或如何解决它。该应用程序在 webrick 下运行良好,但是当作为 WAR 文件(由 warbler 创建)部署到 Tomcat 时,它会表现出这种行为。就像 Tomcat 无法处理所有同时请求一样。在返回前几张图像后,浏览器将等待并旋转几分钟等待更多图像,然后放弃。如果我点击“页面停止加载”按钮,我发现我无法导航到另一个页面,就像 Tomcat 仍然被捆绑一样。

在 routes.rb 我有:

match '/serve_image/:account/:user/:file' => 'images#serve'

我的图像控制器代码非常简单:

class ImagesController < ApplicationController
  def serve

path = "#{Rails.application.config.cir}/#{params[:account]}/#{params[:user]}/#{params[:file]}"

send_file( path,
  :disposition => 'inline',
  :type => 'image/jpeg',
  :x_sendfile => true )
end
end

在 erb 文件中调用它:

         <img class="porto_image" alt="image" 
             src="<%=porto_image.image_filename.html_safe%>"
        />

porto_image 相关代码:

def image_filename
 ret = "#{Rails.application.config.cir_web_prefix}serve_image/#{account}/#{user}/#{self.image_file}"
 ret
end

那么,知道为什么这只适用于几个图像,但当我从同一页面向它抛出 10-20 个图像调用时,它会落在它的脸上吗?

非常感谢任何帮助,这让我感到困惑和受阻。

4

0 回答 0