4

海边的书说:“在处理 http 请求时保存 [图像] 是您要避免的风险”。

为什么是这样?它是否只是暂时减慢了 http 请求的服务速度,或者请求会丢失或发生错误?

4

2 回答 2

3

看来这只是一个放慢速度的问题。在 Seaside 列表中有一个相当详尽的帖子,其中最相关的帖子是电子商务网站的案例研究:

因此,目前会发生这种情况:

  1. 图像不时保存(通常是每天),并复制到单独的“备份”机器。
  2. 如果发生任何不好的事情,最后一张图片会被抓取,然后重新输入自上次保存图片后发出的订单和/或礼券。

而且,#2 很少做——可能一年两到三次,然后事实证明这通常是因为我做了一些愚蠢的事情。

此外,Smalltalk 的一大优点是运行快速实验非常容易。您可以下载 Seaside 并暂停其中一个示例的回调。例如:

WACounter>>renderContentOn: html
...
    html anchor
        callback: [ 
            self halt.
            self increase ];
        with: '++'.
...
  1. 在 Seaside 服务器上打开浏览器(默认为 8080 端口)
  2. 单击“计数器”以转到示例应用程序
  3. 点击“++”链接
  4. 切换回海边。您将看到停止的预调试窗口
  5. 保存图像
  6. 单击“继续” 您会看到计数器正确递增,保存时没有明显的不良影响。
于 2012-06-17T11:58:35.017 回答
3

在保存图像之前执行注册的关闭操作。这意味着源文件已关闭,Web 服务器已关闭。保存图像后,它会执行启动操作,这通常会再次启动 Web 服务器。根据服务器实现,打开的连接可能会关闭。

这意味着您在保存图像时无法接受新连接,并且打开的连接可能会被暂时挂起或关闭。对于这两个问题,(至少)有两个简单的解决方法:

  1. 在保存之前使用 OSProcess 分叉图像(DabbleDB、CmsBox)。

  2. 使用多个图像和负载平衡器,以便您可以在保存之前从活动服务器中一次删除一个图像。

于 2012-06-17T12:12:45.107 回答