海边的书说:“在处理 http 请求时保存 [图像] 是您要避免的风险”。
为什么是这样?它是否只是暂时减慢了 http 请求的服务速度,或者请求会丢失或发生错误?
看来这只是一个放慢速度的问题。在 Seaside 列表中有一个相当详尽的帖子,其中最相关的帖子是电子商务网站的案例研究:
因此,目前会发生这种情况:
- 图像不时保存(通常是每天),并复制到单独的“备份”机器。
- 如果发生任何不好的事情,最后一张图片会被抓取,然后重新输入自上次保存图片后发出的订单和/或礼券。
而且,#2 很少做——可能一年两到三次,然后事实证明这通常是因为我做了一些愚蠢的事情。
此外,Smalltalk 的一大优点是运行快速实验非常容易。您可以下载 Seaside 并暂停其中一个示例的回调。例如:
WACounter>>renderContentOn: html
...
html anchor
callback: [
self halt.
self increase ];
with: '++'.
...
在保存图像之前执行注册的关闭操作。这意味着源文件已关闭,Web 服务器已关闭。保存图像后,它会执行启动操作,这通常会再次启动 Web 服务器。根据服务器实现,打开的连接可能会关闭。
这意味着您在保存图像时无法接受新连接,并且打开的连接可能会被暂时挂起或关闭。对于这两个问题,(至少)有两个简单的解决方法:
在保存之前使用 OSProcess 分叉图像(DabbleDB、CmsBox)。
使用多个图像和负载平衡器,以便您可以在保存之前从活动服务器中一次删除一个图像。