草庐IT

javascript - 上传剖析

coder 2024-07-20 原文

我想知道上传中等大文件的普遍共识是什么。我有一个网络应用程序,每次用户上传文件(通常大于 5mb)时,网络服务器往往会挂起,直到文件上传完成。

以上看起来很正常,因为单个上传可以占用单个 HTTP 请求处理程序。网络开发人员是否考虑了这一点,并且:

a) 支付更多的 HTTP 处理程序

b) 使用其他方法通过使用 AJAX 或其他方法来克服此问题

我听说网络应用程序有一些 HTTP 请求处理程序来处理这个是很正常的,这会花费更多。另一方面,如果成本是一个问题,那么有人建议尝试通过 Flash + AJAX 直接上传到 Web 服务器或存储服务(即 Amazon S3)。后一种方法需要编写一些脚本并且有点困惑。

我的第二个问题:

通过使用 ajax 将文件上传到服务器。这是否仍然占用整个 HTTP 请求处理程序?即服务器会挂起直到上传完成吗?

即使使用 Flash,我仍然需要指定一个要上传到的 URL。该 url 将是我的 Controller 上的操作之一。这意味着处理仍然发生在服务器端。到目前为止这是对的吗?

我在想。另一方面,如果我使用其中一个上传脚本(plupload、uploadify、swfupload 等)直接上传到 Amazon S3,那么处理将在 S3 服务器上进行,而不是在本地 Web 服务器上进行。这根本不会挂起网络应用程序。我的理解正确吗?

想听听您的反馈。

最佳答案

对于大型上传,您应该使用非阻塞的事件服务器,如 Node.js、Twisted on Pyhon、 Perl 上的 AnyEvent 或 Ruby 上的 EventMachine。对于长时间运行的连接,使用每个连接线程模型的成本太高。

对于 Node.js 用户而言,同时连接如此之多以致于他们实际上达到了操作系统限制但仍未使用所有资源的情况并不少见 - 例如,请参阅 this question有人问,他担心只有 3 万 同时连接,然后设法在具有 4GB RAM 的单个服务器上达到 6 万 连接。

重点是,如果您担心您的连接会阻止您的服务器为新请求提供服务,那么您一开始就不应该使用阻止服务器。

关于javascript - 上传剖析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5101305/

有关javascript - 上传剖析的更多相关文章

  1. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  2. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  3. ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器? - 2

    我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r

  4. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  5. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  6. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  7. ruby - 在 Mechanize 中使用 JavaScript 单击链接 - 2

    我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan

  8. ruby - 使用法拉第上传文件 - 2

    我在尝试使用Faraday将文件上传到网络服务时遇到问题。我的代码:conn=Faraday.new('http://myapi')do|f|f.request:multipartendpayload={:file=>Faraday::UploadIO.new('...','image/jpeg')}conn.post('/',payload)尝试发布后似乎没有任何反应。当我检查响应时this是我所看到的:#:post,:body=>#,#,@opts={}>,#],@index=0>>,#>],@ios=[#,#,@opts={}>,#],@index=0>,#],@index=0>

  9. javascript - jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到) - 2

    我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文

  10. ruby-on-rails - 如何在 Rails 2 中保存上传的文件 - 2

    您好,我在Rails2应用程序中集成了ZohoSheet,我可以从本地打开新的ZohoSheet,但是当我在zoho编辑器中单击保存时,它会将文件发送到我的服务器,这是我的生产日志ProcessingZohoController#indexto#(for*.*.*.*at2015-10-0811:24:08)[POST]Parameters:{"controller"=>"zoho","filename"=>#,"content"=>#,"eventsource"=>#,"format"=>#,"id"=>#,"action"=>"index"}ActionController::In

随机推荐