Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

请考虑流的异常处理

  最近发现 Github 上的一些图片显示不全,而且刷新也没用。看了一下网络请求确实图片已经完全加载了,不是本次网络请求的问题。我猜问题应该是出在 githubusercontent 的 CDN 实现上。由于本地网络状况不太好,在首次加载那张图片的过程中我刷新了页面导致了服务器只缓存了一半。
  虽然这是别人家的问题,但也是很值得思考的。这个场景下的逻辑大概是服务器从上游获取到数据后以流的形式传给客户端,而且边传输边做缓存。在这个过程中,客户端主动断开连接,流的传输异常中断。程序没有在这个异常捕获中对已经传输并缓存了的部分做处理,导致了下次再请求相同的资源虽然命中了缓存,但是上一次中断时的缓存。
  这个问题如果再抽象化应该是流异常处理的回滚操作没做好。流这种东西虽然有很多优点,但它毕竟是一个异步操作。如果一个流的数据要同步到多个地方,那就相当于是多个异步操作打包成的一个事务。这时候就要考虑回滚等问题。
  我们自己就真的不会犯这种错误么?其实我写代码也很少考虑客户端主动终止的情况。大多数时候对于这种异常处理都只是简单地打个 error log 而已。而且基于 Promise 的写法让程序的异步错误捕获机制很健壮,所以至今没有踩到类似的坑。但要是再不注意点,将来可能做出同样傻逼的事情。
网名:
54.162.218.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^