BUAAZP.

探讨iOS应用里的缓存设置

June 13, 2014

探讨iOS应用里的缓存设置

@招牌疯子

今天碰到某度网盘产品讨论在爱疯上的缓存设置及其策略,我表示异常困惑,于是决定在这个常年除了垃圾回帖外就没有别的在更新的博客上写一写,算是别浪费了租用空间的费用。

网盘类的产品,由于预览和保存的需要,必然会从服务器上下载用户从其他端上传过的,部分或者全部的文件内容。好比一部www.av9.cc-ABS130.avi,你在iPad网盘上想点击观看,肯定需要把整个文件都下载下来;但是当你用2M宽带小水管屁颠屁颠地下完之后才发现,iPad自带播放器打不开avi格式,你瞬间想要暴粗口了,明显avi坑了av。

抛开用第三方应用打开不谈,你所下载的980.3M数据一下子变成了无用数据,于是网盘把它们叫做“缓存数据”。再好比你去泰国跟人妖合影的照片,你用网盘一点击,很短的时间它就打开了,当你看见相貌骄人的人妖MM时心情立马比刚才的ABS130要好了几千倍,然而此时你所下载的内容,其实并不是照片本身,而是一个被压缩过的质量略差的缩略图而已,网盘依然把它叫做“缓存数据”;如果你仔细观察会发现照片下方还有一个五角星按钮,这是干嘛的呢,你好奇地一点,屏幕中间赫然弹出一个大笑脸外加黑底白字的告诉你“收藏成功”。

当网盘终于把这个数据叫做“收藏数据”的时候,你会神奇地发现在设置页里头有一个比上面所说的策略复杂一万倍的界面让你来算计、清理你的数据。真是我待缓存如初恋,缓存虐我千百遍也不为过。“坑爹哪!”

虽然我不知道这是哪位蛋疼的产品经理想出来的东西,但是当一些策略会搞得产品经理自己都头大无语的时候,这些策略就是shi一样的。看图:

baidu_netdisk

我相信没有人会有兴趣在着急下载ABS130的时候去搞明白这些玩意到底是怎么加起来才能不超过500M吧,更别提当我们自以为搞懂了胆战心惊地点击这个大红按钮之后,会弹出一段让你更加看不明白的提示语,就差给你弹一句“PM的心思你别猜”了。更让人无语的是,竟然还要以“这东西肯定要做”为理由来设计这个东西,莫非是酷盘最近风生水起就一定要以他们为行业标准么。那我们再截图看看酷盘是什么德行:

kupan

当我看到大红色按钮下方的一排“如需清除本地收藏,请先取消收藏文件”的时候我差点没吐出血来,你们怎么不直接跟用户说“如果怕空间不足建议不要使用本产品,不使用本产品不会占用您的任何手机空间”呢?

好吧,吐槽结束说点正经的。

缓存很容易理解,为了使某些使用频率较高的内容能够更快地访问而保存在本地,避免再次下载浪费流量和时间。说白了,这些数据是设计给程序用的,它们能用多大空间,什么时候被清理,都应该根据程序的需要来调整,根本就不应该让用户去计算!

在PC上,浏览器是最常用到缓存的,你第一次登录微博会发现加载很慢,但是下次登录的时候就快多了,是因为浏览器把微博的很多图片啊js文件啊保存在某个tmp目录下,这情景跟手机上使用网盘【预览】是完全一样的;与之相对,你在某网站上看到一个好用的软件,然后点击下载把它下在了自己的电脑上,手机上是【收藏】,只不过iOS不让你随便选路径罢了;那你见过哪个浏览器的设置里面有一项是说“您的下载和缓存总空间是500M,如果您电脑空间不足,请点击清空缓存释放。但是,清空的不包括您的下载内容哦~”

说白了,缓存其实应该叫“临时文件”,它们并不是用户最需要的东西,该清理时就得毫不留情地清理,如果你的算法设计得足够好,必然能在空间和速度上找到一个平衡点,这正是广义上缓存这个策略存在的意义,而不是偷懒让用户的脑子去计算;收藏才是关键的内容,它们是用户确定之后才保存下来的,你当然不能随便清理,当用户发现自己的手机空间不足了,他应该像在电脑上一样一个一个比较,将自己认为不重要的文件【取消收藏】,而且这部分工作,在计算机行业发展到能够智能准确地识别用户兴趣爱好之前,还是得用户来做。

设置项里面,只需一个清空缓存按钮即可。假如缓存清理了还不够用,那只能挨个取消收藏了(我能再说一句这个收藏的称呼是尼妈想出来糊弄人的吧?)。为此我调研了iOS上流行的一些应用,和几乎全部的网盘类产品,也就某度和酷盘在设置页里故弄玄虚自欺欺人而已。某数字公司起码在这一项上符合我的期望。

360

更让人觉得无语的是,就这些让人啼笑皆非的脑残设计,居然还要浪费好多人吵个大半天也没啥结果。在缓存清理这个事情上,我觉得很明显,既有的和所探讨的设计都是shi一样的存在,不信你拿着本文第一个截图给10个人看,看有几个能搞明白那是啥玩意。我不相信把用户搞得糊里糊涂不明不白的设计不是垃圾。

如果放开了说,某个方案一眼看不出好坏,那之前在微博上看到的某大佬名言“你说这样子好,那你就拿出数据来证明;你要是拿不出数据,那就听我的”就是最好的解决办法,谁是这个项目的头,谁一句话盖棺定论,一来免得浪费时间,二来本来就没有对错,交给市场去检验。既然敢经过层层面试把人家招进来,就要相信人家的能力,更要有允许试错的魄力。

招牌疯子

Coder, OpenSource, DataStorageEngineer. Work@ByteDance
开源爱好者,zimg作者,大规模数据存储工程师。