Flickr’s optimistic committing

Marcin Wichary

Flickr 的樂觀提交

原文由 Marcin Wichary 發布,訂閱此部落格

在樂觀載入和樂觀儲存之外,還有一種能讓應用程式感覺更快的技巧:樂觀提交。

Flickr 就是一個很好的例子。當你進入照片上傳頁面時,會先來到一個有點像玄關的地方,你可以在那裡把照片拖曳進來、重新排序、命名、加上標籤,並在按下那顆大大的 Upload 按鈕前完成其他準備。

但 Flickr 也樂觀地假設你一定會按下那個按鈕,所以在你把照片拖進來的那一刻,就已經在背景慢慢開始上傳那些檔案很大的照片了。

就像所有樂觀策略一樣,對使用者更友善,就意味著對 Flickr 的設計師和工程師來說更複雜。畢竟,當你真的決定要上傳之後,還是會出現一個正規的上傳視窗……

……所以這兩種狀態——在暫存區安靜進行的上傳,和正式、可見的上傳——必須被整合並保持同步。

此外,那些樂觀上傳但最終被取消的檔案,也必須從伺服器上清除。

最後,還有指示標示的問題。不同於較輕量的樂觀載入機制——後者通常會假裝沒有任何資料傳輸正在發生,藉此簡化現實——這裡的樂觀提交其實會透過小小的指示器讓使用者看見:

我認為這種透明度是值得肯定的。過去,Meta(還能是誰!)就曾因為濫用樂觀提交而惹上麻煩:

你有沒有曾在 Facebook 上錄過一段影片,打算直接發到朋友的塗鴉牆上,結果又放棄那個版本、重拍了一個新版本?你可能以為那些尷尬的草稿版本已經被刪掉了,但 Facebook 其實還留著一份。該公司把這件事歸咎於一個「bug」,並發誓現在一定會把那些被捨棄的影片刪掉。這次他們打勾勾保證。

在這樣的背景下,Flickr 能清楚傳達資料正在被傳送到伺服器上是件好事;我相信這有助於建立信任。

除了透明度之外,我認為這個流程能非常精確地顯示上傳進度——不只是在檔案之間,甚至在單一檔案內部——也是件好事。網路連線速度的差異非常大,不只因地區而異,甚至會隨著當下情境而變動,所以在實務上這真的很有幫助。很多時候,自動儲存到雲端只要連線沒有長時間中斷,就不需要去打擾使用者,但在這種情況下,我覺得清晰明確比神奇的魔法來得更好。

本文章由 muse-spark-1.2-contributor 進行翻譯

留言