装了之后变慢是常见现象
页面上多出一层,本来就要多花一点力气,这件事没什么特别。你打开的那一页原来只有平台自己的一套脚本,现在还要把另外一份也加载进来、还让它读一遍页面上的内容、再把读到的摆出来。这三步都要时间,时间长短取决于那一页本身有多重。
为什么有人装了之后毫无感觉,有人装了之后每打开一页都要等半天,差别在于他常看的那几页本身有多满。商品列表页上摆着几十张主图和一长串卡片,这种页面本来就吃力;一个内容很简单的订单页上多一层,多数人感觉不出来。
装上之后变慢还有一个容易被忽略的方式:不是每一页都慢,而是只有某几页慢。你平时待得最多的那几个页面上它都在跑,其他几十个页面上它也在跑,但那些页面你一天只打开一两次,所以你的整体感受会被那几个常用页面决定。
还有一个让人误判的现象:装上之后你开始留意页面快慢了,在此之前你从来没注意过。同一页在装上之前的打开速度其实也不快,只是你没盯着看。这种时候你卸载掉它、觉得快回来了,很可能只是你这一次没那么专注地盯着等。
页面本身的快慢本来就在变。同一个页面在早高峰和凌晨打开,速度能差出一截;同一台电脑上多开几个标签,每一个都慢下来。你装完它之后先不要急着做结论,用几天时间在差不多的时段各试几次,两边才有可比性。
还有一层跟位置有关:它挂在哪一页上,决定它有多重。挂在简单页面上的那一种几乎不花时间;挂在几十行卡片的列表页上的那一种,光是把每一行都读一遍就要花一阵。同一块东西挂在两个不同的页上,你感受到的差别可能很大。
所有这些加在一起说明一件事:装上之后慢一点是这一种壳的常态,不值得为这一点就把它当成一个问题。真正需要动手的是另外一种情况:不是慢一点,而是慢到你手上那件事做不下去,或者某一页干脆打不开。
还有一类情况值得提早知道:慢的感觉有时候不是来自速度,而是来自页面上的东西会跳。它加载完之后往页面里插一栏,页面上原本的内容被挤了一下,你必须重新找刚才看到的那一行。这种跳动的难受程度,比多等半秒更明显。
浏览器同时开着十几个标签的时候,这件事会更明显。每个标签里的那一层各自都在跑,各自都在占地。你把某个标签放到后台,它不一定就停下了,而是继续在跑。你把鼠标停在浏览器上感到风扇转起来,多半就是这些加在一起的结果。
还有一处:同一台电脑上,你装的东西总量是有限的。你装了一层之后又装了一层,加到第七八层的时候,每一层各自看着都不重,加起来就重了。这时候把责任算到最后一个装上去的头上,未必是准的,因为它是压到已经堆满的那一叠上的那一份。
还有一层跟设备有关。同一份东西在配置高的机器上和旧的机器上感受完全不同,在旧机器上你可能会觉得它把浏览器拖垮了,在新机器上你几乎感觉不到。你在别人的电脑上看了一眼觉得没问题,回到自己机器上发现慢,不是它换了,是机器换了。
还有一层跟网络有关。它要读的那一份数不在你本机上,得从远处取回来。你那边网络不稳的时候,它取数要等,页面也就跟着等。这时候你看着是浏览器慢,实际上是网在慢,你把装的东西全卸掉也解决不了这一条。
这一条还可以从一个侧面验证:同一个页面在办公室里和在家里各打开一次。如果两边的快慢差得很明显,那么拖慢的主要原因不在页面上装了点什么,而在两次打开时网络链路的差别上。这一下能帮你省掉很多白折腾的动作。
把这些因素排除掉之后再看剩下那一部分,才轮得上谈它到底花了多少力气。你现在至少知道一件事:这一份力气是它必须花的,因为读页面、取数、往页面上摆,这三件事里没有一件可以不花力气就完成。
这种壳在这一点上有一个很实在的性质:它关掉之后,那份力气就跟着没了。你不用卸载、不用重启浏览器,停一下刷新就能看出差别。这个随时可关的特点,正好也是排查慢这件事最省事的办法,后面几节都要用到它。
把这一节收在一句上:慢是这类形态的常态,值得处理的是慢到你做不下去的那种。在用几天时间把上面这些因素各排除一遍之前,不要急着做卸载这个动作,因为它未必是原因,而你很可能把原因留在了别处。

查慢这件事不用凭感觉,把它停一次、看一遍请求,范围就缩到很窄了
第一种拖慢:它自己要多跑一份
它在页面上要多跑一份,指的是浏览器除了加载平台自己的那套东西之外,还要把它的那一份也加载进来并且一直跑着。这一份里包含两部分:读页面的那一段和画界面的那一段。两段都在你的浏览器里跑,都在占着你电脑上的那点力气。
读页面的那一段要做的事情不轻松。它得把这一页上摆出来的内容一项一项认出来:哪个是价格、哪个是销量、哪个是评价条数。页面上的每个商品卡片都长得差不多,它得逐张去认。一个列表页上有几十张卡片,这个动作就要重复几十遍。
画界面的那一段也有成本。它要在页面上多插一栏、在每一行上加标记,页面上每多一个元素,浏览器排版的时候就要多算一次。你看到的只是多了小小一块,浏览器在底下算的东西比那块大得多。
还有一个成本来自它要一直盯着页面。有的面板在你翻页、切规格、往下滚的时候都要重新算一遍,因为它给的那一层得跟着页面变。这种持续跟着跑的写法,比只在打开时算一次要费力气,好处是你滚动的时候看到的东西一直是新的。
有一类很费力气的地方是它自己算。它不只是把页面上读到的数摆出来,还要在中间做几步换算:把两个数相除、把几个数排序、把一屏的项按某个标准挑出一部分。这几步每翻一页都要重算一遍,页面上东西越多,重算花的力气越大。
这种花力气跟你手上的活对不上是最常见的浪费。你在那一页上只是要改一个规格、填一个地址,用不到它算出来的那一层,可它照样在跑。这一类力气花得最冤,因为那一步对你完全没用,而你还得为它多等一点时间。
它在页面上跑的这一份还有一个特点:它是和页面同时开始的。你打开那一页的一瞬间,两边都开始跑,谁也不会等谁。所以它在页面刚打开的那几秒里占的份量最明显,等页面稳定下来之后,它的存在感就低了很多。
有一种写法会更省钱,就是等页面完全稳下来之后它才开始动。这种写法下你打开页面的头几秒完全不受它影响,多出来的那一层是稍后才出现的。代价是你要多等一会儿才看到它,看不到的那几秒里你已经在看页面本身了。
判断是不是这一份在花力气,有一个很直接的办法:把它停掉,然后在同一个页面上做同样的一串动作,看看这一串动作总共花的时间差多少。差的这一截就是它那一份的成本,这一截如果很小,那么你在别处找原因就好。
还有一层成本容易被记在它头上但并不属于它:它读页面的时候,如果页面本身还没加载完,它会等着,这一等也占着浏览器的力气。你一看着页面卡住就觉得是它,实际上那一段是页面自己在加载,它只是排在后面等着。
这一类成本还有一个时间上的规律:你第一次打开某一页的时候最明显,因为那一次要把它的那一份从本地读进来、装起来。之后在同一页上再打开,它已经在那儿了,重新装的那一步就省掉了。所以第一次慢和后面几次慢,幅度能差出一截。
这种花力气还和你同时开了多少页有关。同一个浏览器里你开着十几个标签,每一页里都有一份在跑,加在一起的份量就不是小的了。你把几个标签关掉再回到那一页,感觉会明显不同,但你自己往往不会把这归功于关标签。
分摊到一天里看,它花的那一份力气其实不大。你一天里在那一页上待的时间可能只有十几分钟,剩下几个小时里它不占你什么。真正让人难受的是它把力气花在你最需要页面反应快的那一刻,比如你正连着翻十几页挑款的时候。
有一类面板会给你一个开关,让你只在需要的时候让它跑。这种设计把成本从一直付变成了按需付,代价是你要自己记得去打开。你如果一天里只有一段时间需要它给的那一层,这种设计对你来说确实比一直跑着更省。
把这些合起来看,它自己要多跑一份这件事没有什么神秘的地方。它要读页面、要算、要画,三件事都要花时间,花的时间和你那一页上摆的东西的量成正比。你要做的不是让它不花,是让它别在不需要的时候花。
同一件事有好几种交法:要先把问题打出来的助手、摆在手边等你点的工具、装在本机上的软件、挂在页面上的插件、开在浏览器里的网站。它们在花力气这件事上各不一样。装在本机上的那一个在后台运行的时候,你关掉浏览器它还在跑;开在浏览器里的那一个你不去打开它就不占你什么;挂在页面上的这一份,你关掉浏览器它也就跟着停了。同样是占力气,什么时候占、占多久,这几种交法本来就不一样。

把这几处的份量大致排一排,你才知道该先动哪一个,而不是先动最显眼的那个
第二种拖慢:它要和远处的服务器通信
第二种拖慢是它要和远处的服务器说话,而你浏览器里的页面得等着这句说完。它读到的那几个数不在你本机上,得从外面取回来。取回来之前它往往什么都不摆,或者先摆个空的框。你看到的那一段空白,就是它在等回话。
这种等待和你自己的网络状况直接挂钩。网好的时候这笔来回很轻,你可能感觉不到;网不稳的时候,一次取数要试好几回,页面那一栏就一直空着,你等着的地方其实是它在等。这一层的慢跟你装了几样东西没什么关系。
它取数的时候会不会挡住页面,取决于它是怎么写的。如果它等页面自己先长完再去取,那你打开页面的时候不受影响,多出来的那一层是稍后出现的;如果它一开始就去取、并且要等取回来才继续画,那你页面上的那一部分就一直等到它回来为止。
还有一种挡住页面更明显的情形:它取的那一份东西比较大。比如一整屏商品的几项数、或者某一类里好几页的东西,这种量取回来要花的时间就更长。你在列表页上感受最明显,因为那一屏上的东西本来就多。
它和远处说话的时候,其实是在替你做一件你本来要动手做的事。你本来要切到别的页面去把那几项抄过来,现在它替你取了一趟。这一趟省的是你去别的页面的动作,花的是那一次来回的时间。哪一头更划算,取决于你要取多少项、以及你原来那些页面离你有多远。
这种来回还有一个很容易被忽略的代价:它取回来的那一刻页面会动。数据到了,它往页面上插那一栏,页面上的内容被挤一下,你正在看的那一行会往下挪。这种挪动的难受程度不亚于多等一会儿,而它发生的时候你一点准备都没有。
判断这一层是不是主要原因,看一眼网络那一栏就够。你打开那一页的开发者面板,看那一次加载里有多少条请求是发到外面去的、每一条花了多久。如果有一串请求是它发的,而且里面有一两条等得特别久,那么慢的原因就在这儿。
还有一层很实在的差别在于远近。同一个服务放在离你近的地方还是远的地方,来回的时间能差出好几倍。你从自己这一侧看不出它把服务器放在哪儿,但你能从等的时间长短上大致感觉出来,同一件事有时候快有时候慢,多半就是这个原因。
有一种情况是它取数失败之后会重试。网络抖一下,它取不到,于是隔一会儿再试一次,再试一次又不成,再试。这几轮下来你看到的是页面一直不动,实际上它在反复地试。这时候你把网络切一下或者等一会儿,它可能自己就好了。
它和远处说话的频率也值得留意。有的只在页面打开的时候取一次,之后就不再取了;有的在你每次翻页、每次改筛选的时候都取一次。后面这一种在连续翻页的时候会累积成一条很长的等待,你翻十几页下来会觉得页面越翻越慢。
同一件事在你那边的感受还和你同时开了多少页面有关。你的网是有限的,浏览器里有几个页面同时在取数,每一份都要排队。你在一个页面上等着它取数的时候,别的页面上也有一份在等,这时候两边一起慢,谁也不是罪魁祸首。
有一种做法能明显减轻这一层:让它把你常看的那几项提前取好放在本地。你再打开那一页的时候它先摆本地那一份,同时去外面取新的。代价是你看到的可能是稍旧的那一份,好处是你打开页面的那几秒不用等着。
还有一种做法是让你自己决定什么时候取。页面上给你一个按钮,你按下它才去取。这样它就完全不会挡住页面,代价是你每次都要多按一下。你一天里只在某几个时刻需要它给的那一层的时候,这种做法比它自己一直去取要省。
这一层有一个跟时间点有关的特点:它取回来的那份数可能不是此刻的,而是前一日的或者更早的。这一点在感受上不构成拖慢,但它在判断上很重要:你在页面上看到那个数摆出来了,别以为它一定是刚刚才发生的事。
把这一层和你自己手上那点动作比起来,通常会显得不太值。你要从别的地方拿两三项数,自己动手切一个页面、抄下来,也就是十几秒的事。那些数字是在你选的时间点去取的,这一点也是它那一趟替不了的地方。
知虾有挂在页面上的形态,它标出来的数据是前一日的,也就是说它那一趟取的是整理过的那一份,不是页面上此时此刻正在变的那些数。它拿上来的是多站点数据覆盖九大站点的那一层参照,和你自己那一摊的成交、成本不在同一个地方,也不动你后台里的东西。
| 可能让页面变慢的地方 | 什么时候最明显 | 它该不该由你处理 | 能做的动作 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 页 | 面 | 自 | 己 | 的 | 主 | 图 | 与 | 脚 | 本 | |
| 打 | 开 | 页 | 面 | 的 | 前 | 几 | 秒 | |||
| 改 | 不 | 动 | , | 只 | 能 | 接 | 受 | |||
| 换 | 一 | 个 | 内 | 容 | 更 | 轻 | 的 | 页 | 面 | 看 |
第三种拖慢:几个插件互相挤
第三种拖慢来自几个装在一起的互相挤。单独一份跑起来不重,几份一起跑的时候,它们各自都要读同一页、各自都要往页面上插东西、各自都要和外面说话,这时候浏览器要同时照顾好几件事,每一件都慢下来。
挤的第一种样式是抢同一个地方。几份都想在页面边角上加一栏,位置就那么几个,它们互相把对方挤开,或者依次插进去,页面被反复重排。你看到的是页面加载的时候先跳一下、再跳一下,最后才安顿下来。
挤的第二种样式是改同一块内容。有的会把同一行卡片重新排一遍,有的会在价格旁边加标记,几个一起改的时候,谁最后改完谁说了算,你看到的顺序可能变了。这时候你以为页面自己变了,其实是它们在互相覆盖。
挤的第三种样式是同时都在和外面说话。几个一起发请求,你的网要排队处理,每一份都要多等一会儿。你打开页面的时候那一串请求挤在一起,排在后面的那几份等的时间明显比单独跑的时候长。
还有一种挤不太容易被看出来:几份各自都在那一页上算一遍同样的东西。比如好几份都要把一屏商品的价格排序,各自算一遍、各自摆一遍。同样的活做了好几遍,页面当然要多花时间,而你在页面上看到的只是多出来了几处标记。
这种挤的难受程度跟它们的数量不是一条直线。装到第三份的时候你还能感到一点变化,装到第七八份的时候页面会突然显得很吃力。这是因为浏览器给你那一页的力气是有限的,越过某个点之后,每一份新加的都会让所有份一起变慢。
找这种挤的办法是轮流停。你把这几份里的第一份停掉,刷新看快慢有没有变;再换第二份停掉,再看一遍。一个一个试下来,最花力气的那一份会露出来。全部一起停掉再一份一份开,也是同一个道理,只是顺序反着来。
还有一种挤来自两份功能重叠的东西。两份都在给同一页加参照,都摆着价格和销量,你看到的是两份说法并排放在同一个页面上。这种重叠不但花力气,还会让你在两者的口径不一样的时候不知道该用哪一份,代价比单纯慢一点要大。
有几个装在一起的时候,还有一种隐蔽的拖慢来自它们各自的更新。几份同时更新的时候会一起重启、一起重新读页面、一起重新取数,那一瞬间页面上挤在一起的动作最多。你如果恰好在那时候打开页面,会觉得比平时慢很多。
数量带来的还有一个后果是不好归因。装了三份之后某一个页面变慢了,你很难说清是哪一份,因为你没有单独试过每一份。要弄清这件事,你得回到只装一份的状态一份一份加上去。这个过程要花时间,但做完之后你对页面的认识是准的。
还有一种挤跟页面上的位置有关。几份都在同一页上跑的时候,谁先装谁后装会影响结果:先装的那一份先读到页面、先插进去,后装的那一份读到的是已经改过的页面。你看到的那一栏是什么样,可能取决于它们装的先后。
这一层和别的形态之间有一个可以对照的地方:装在本机上的那一个程序,它在后台跑的时候占的是本机的力气,和浏览器里的那些各算各的;挂在页面上的这几份互相挤,占的是同一页那一份力气。同一台机器上,两种东西的挤法并不一样。
减这种挤最有效的办法不是换更好的电脑,是把用不着的关掉。你把一份长期没在用的东西停掉,那一页上就少了一份在读它、少了一份在改它。这一步不需要你弄懂它们各自在干什么,只要知道数量本身就是一个变量就够了。
还有一个跟挤有关的现象值得知道:几份之间偶尔会互相触发。一份改了页面之后,另一份看到页面变了,以为有新内容,于是重新读了一遍。这种来回触发不会一直发生,但一旦发生,浏览器里那一页会明显变得很吃力,停掉其中一份就好了。
判断是不是挤,有一个很省事的办法:把这几份全停掉,然后再只开一份,看这一页在你的感受里是几档。全停、开一份、开两份、开三份,四个档各试一次,你就能说出来多一份大致多花多少。这个尺度是你自己量出来的,比听别人说要准。
把这一层放到一起看,数量这件事的意义就清楚了:不是每一份单独看都合格,整体就一定顺畅。你要的是每一份都还能对得上你手上的活,对不上的那些留着,只会让另外几份也跟着一起变慢。做减法的标准从来不是数量多少,是你说不说得出它替你做了什么。
怎么判断慢在哪
查慢这件事有一个顺序,第一步是先弄清慢的范围。是所有页面都慢,还是只有某几个页面慢。所有页面都慢的话,多半跟浏览器整体或者网有关;只有某几个慢,范围就缩到那几页上装的东西和那几页本身的内容了。
第二步是在那几个慢的页面上把它停掉,然后刷新一次,做同样的一串动作。停了之后明显快了,嫌疑基本就落在它身上;停了之后一样慢,那么慢的原因在页面自己或者网那一头。这一步不需要任何工具,一分钟就能做完。
第三步是看它取数的这一条线。你打开开发者面板里的网络那一栏,重新打开页面,看那一串请求里哪些是它发的、每一条花了多久。有等得特别久的那一条,说明慢在这一趟来回上;请求都很短,说明问题不在这儿。
第四步是看它在页面上跑的那一份花了多久。开发者面板里能看到每一段脚本各自跑了多长时间,那一条时间长的如果出现在页面加载完之后的几秒里,很可能就是它算和画的那一段。这一项看一次就够,不用天天盯着。
第五步是把其他的轮流停。你装了不止一份的时候,先全部停掉,确认页面回到本来的速度,然后一份一份打开,每开一份刷新一次,看快慢退回哪一档。一轮下来你手上就有一张表,写着每一份大致花多少。
第六步是把时间点分清楚。你感到慢的那一刻,是你刚打开页面的时候,还是翻了几页之后,还是切回来的时候。这三个时刻对应的原因不一样:刚打开对应加载和取数,翻了几页对应反复重算和反复取数,切回来对应它在后台还在跑。
第七步是把你自己的网络和这台机器排除掉。同一个页面在另一个网络下打开一次,在同一台机器的另一个浏览器里打开一次,两个对照各做一遍。两边如果都很快,那么慢的原因就落在你平时用的那一套环境上,而不是这类东西本身。
有一个更省事的交叉办法:拿一个你完全没在上面装过东西的浏览器打开同一个页面。两边一对比,差出来的那一截就是装上去的那些带来的总成本。这个办法不用你分辨是哪一份,只要知道总数够不够大就行。
还有一步很容易被跳过:确认你看到的慢是不是真的慢。你拿着秒表数一数,从按下回车到页面能用花了多少秒,再和没有它在的时候比一次。你可能会发现两者的差别只有零点几秒,而你的感受里那一截被放大了。
判断的时候要留意一种情况:慢的感觉来自页面上的跳动而不是等待。你把这一项单列出来单独估一次。如果页面加载本身很快,只是加载完之后有那么一下跳,那要处理的是它插栏的时机,而不是它到底花了多少力气。
还有一个判断办法是看它在后台的时候会不会还在跑。你切到别的标签页去,过一会儿切回来,看那一页是不是还在动。还在动说明它没停,你在别的页面上的时候它也在占着力气。这一条能解释为什么整台机器都变慢了。
排查完之后最好写一句结论。是一份在跑得太多,还是取数等得太久,还是几份在互相挤,还是根本不在它身上。写下来这一句之后,你下一步要动的动作就定了,也不会过一阵子又把同一件事重查一遍。
这一套顺序里没有一步需要你懂代码。停一下、刷新、看那一栏、轮流试,四件事在浏览器的常规操作里都能完成。你不需要知道它是怎么写的,只要能把范围从十几个可能缩到一两个,剩下的就交给你的取舍。
知虾摆出来的那一层里,有一部分是它取回来的参照数,有一部分是它按自己的口径整理过的。这两部分在排查的时候经常混在一起看,所以当你觉得某一页慢的时候,先分辨一下慢在你点开那一页的那一下,还是慢在它把那一层摆出来的那一下。
还有一条边界要提前说清:排查能告诉你的只是这份成本有多大,不能告诉你这一页本来应该多快。页面自己也有它的份量,那一部分你改不动。你把这个尺度记住,就不会把页面本身的问题算到装上去的东西头上。
顺序走完之后通常会出现三种结果:成本小到可以不管、成本中等可以通过开关来控制、成本大到你在那一页上做不下去。前两种你都不用动大动作,第三种才轮得上换形态或者换一个更轻的做法,后面两节就讲这个界线。

三种拖慢各自发作的时点不一样,所以你感觉慢的那一刻,其实已经能排除掉其中一两种
慢到什么程度该处理
该处理的界线不是快慢本身,而是你在那一页上做的事做不做不下去。页面打开慢半秒、一秒,你多等一下就过去了,这一档不值得你为它换掉任何东西。真正的界线是等到你开始避开那一页,或者开始一边等一边做别的事。
有一条很好用的界线是数你等了几秒。你从按下回车到能开始操作,如果超过了三四秒,而且这件事天天发生、每一页都发生,那就值得动手了。如果只是偶尔在某一页上多等一两秒,把它记下来就好,不用大动干戈。
另一条界线是次数。一天里你打开那一页十几次,每次都多等一秒,一天下来就是十几秒,而且这十几秒是分散在你最需要专注的时刻里的。这种情况即便单次感觉不重,也值得处理,因为它的成本是被次数放大的。
第三条界线是它有没有挡住你的动作。页面还没稳定下来,你想点的那一行还在往下跳,或者你想填的那一栏被挤走了,这种挡不是时间上的慢,是让你做错了动作。这一类的难受程度往往比多等两秒更值得处理。
第四条界线是它有没有影响你不看它的那些时刻。你切到别的标签页去,机器还在发热、声音还在响,说明它在后台还在跑。这件事和你当下那一页快不快没有关系,但它影响你整台机器的状态,值得单独处理一次。
第五条界线是你自己有没有变得不想用它。你用了一段时间之后,开始在打开那一页之前先犹豫一下,或者习惯性地先去别的页面做完事再回来。这种回避是一个很准的信号,说明它给你的那一层已经不抵它花掉的那点等待了。
有一档是最不该动的:你只是听别人说这一类东西会拖慢页面,自己并没有感到慢。为了这一句去卸载或者换一套,你花掉的时间很可能比那一层给你的帮助还多。这一档里最合适的动作是什么都不做,过一段时间再回头看。
还有一档值得马上动的:页面已经到打不开或者误操作的程度。你在那一页上点了两次都没点上想点的那一行,或者在填一个表的时候页面跳了一下,填错了位置。这一档里慢已经不是效率问题,是出错问题,该马上处理。
处理的方式不必只限于卸载。你可以先只停掉它,看那一页回到什么程度;也可以先只把它在那一页上的权限收窄,让它不去那些你根本用不到的页面;也可以换一个更轻的做法来做同一件事。这几种里哪一种合适,取决于你查出来的是哪一种拖慢。
还有一层界线跟时段有关:如果你感到慢只发生在某一个时段,那多半和网有关,而和它没什么关系。同一页在别的时段打开很快,说明问题不在它身上,这时候你去卸载它不但不会变快,还得重新装回来,来回折腾的功夫全白花。
有一档是中间地带:单次等待还能忍,但每天重复很多次。这一档里最合适的动作不是卸载,是把它的开关做成一个动作。你在不需要它的那些页面上把它关掉,在需要的那一两页上把它打开,成本就落在一个很低的水平上。
还有一档要按你手上的活来定:如果你最近正在连着翻十几页挑款,那这段时间里它对你是天天要用的,慢一点也值得留着;如果这一个月的活根本用不到它给的那一层,那这段时间里它就是纯粹的成本,先停掉更省。
该处理的界线里还有一条是关于你自己的耐心的:如果你已经为了它改变了做事的方式,比如刻意避开某一页、或者干脆换了另一台电脑来做这件事,那这件事的成本已经超过了它给你带来的东西,不用再等它更严重。
知虾标出来的数据是前一日的,这个性质在处理慢这件事上有一个好处:它不会因为你多等一会儿就变得更新。你手上那一份本来就是整理过的,所以你完全可以选自己方便的时候去看,而不必在页面最忙的时候跟它一起挤。
还有一种界线是跟更新有关的:如果它更新完之后你需要重新摸一遍它的位置、重新认一遍每一栏是哪一份摆的,那么这一次更新的成本也算进它整体的成本里。这一点和装在本机上的那种东西一样,更新这件事本身就是一笔开销。
把这几条界线合起来看,判断标准可以写成一句话:它花掉的时间,有没有超过它替你省下的动作。超过就该动,没超过就不用动。这一句话听起来很宽,但你只要把上面那几条具体的界线各对一次,答案通常是很清楚的。

数量往上加的时候,等待的时长一路走高,而你对每一份在干什么的把握一路走低
怎么减到不拖慢
减到不拖慢的第一个动作,是把它的活动范围收窄。它在很多页面上都开着,但你真的会用到它的可能只有两三页。把那几页以外的都去掉,它跑的机会就少了一大截。这一步不用卸载,改一下范围就行,效果通常最明显。
第二个动作是按需开关。你把它当一件事,进那一页要用就打开,用完就关。这一条在前面一篇里已经说过,放在这里是因为它确实是最省力的一招:它花的力气从一直付变成按需付,而按需的那一部分本来就少。
第三个动作是把重叠的那些去掉。你装着两份都给同一页加参照的东西,两份摆着价格和销量,说法还不一样。留一份就够了,去掉另一份之后页面立刻轻一截,你的判断也不再需要先弄清哪一份是哪一份。
第四个动作是把它取数的时机往后挪。如果它能在页面稳定之后再取,你打开页面的那几秒就不受它影响。有的这一类东西自己就带这个选项,有的需要你换一个做法。这一步不改变它给什么,只改变你什么时候开始等。
第五个动作是把不必每次都取的那些定下来。你一天里需要更新的可能只有一两次,别的时候看同一份也够用。把它设成手动去取,你在需要的时候按一下,剩下的时间它就不再去和远处说话,这一层等待就没有了。
第六个动作是把同时开着的东西减到能说得出名字的数量。你能说出每一份在干什么,就说明你留着的是你在用的;你说不出某一份在干什么,那就是可以停掉的那一份。这个标准比看它名字熟不熟要准。
第七个动作是隔一段时间复看一遍。你把这一段时间里每一份各自帮过你什么写下来,帮过的留着,没帮过的停掉。这一步不必定期做得很勤,你手上的活换了、常打开的页面换了的时候做一次就够了。
还有一个动作和页面本身有关:把常用页面固定下来。你同时开着十几个标签,每一页里都有一份在跑,反而不好判断谁在花力气。你固定住三四个真的在用的页面,其余的关掉,回到那一页的时候感受会清楚很多。
第八个动作是分清哪些成本你改不动。页面自己的主图和脚本、你自己的网络、浏览器本身,这三样都不因为你怎么装而变化。把力气花在这三样上是白花的,你在能改的那几样上加加减减就够了。
还有一个动作是换做法而不是换东西。同一件事有的做法轻、有的做法重。你要的如果只是某几个数在某一页上出现一下,那用一个轻一点的做法就能满足;你要的如果是一整套连着看,那才需要重一些的做法。先把你要的那件事说清楚,做法自然会收窄。
第九个动作是把页面上的活儿放到合适的时候做。你在那一页最忙的时段去翻十几页,它要跟着你翻十几遍;你把这件事挪到一个你方便的时段,网也顺、页面也不挤,你等的那一截就短了不少。这一步不改任何设置,只是挪一下时间。
还有一个动作是把它和别的几种交法配着用。你要横着比一类商品的时候,重的活交给开在浏览器里的网站去做;你要在某一页上顺手看一眼的时候,用挂在页面上的这一层;装在本机上的那个软件留给需要离线看的那一件事。几种交法各干一段,任何一边都不用扛下全部。
这些动作里有一个共同的思路:让它在不需要的时候不跑。这一类形态最大的特点就是能随时关、随时开,你不用为这个动作承担什么后果。你把这条性质用足,多出来的那点成本就能压到一个能接受的水平上。
还有一层是接受。这一份力气里有一部分是省不掉的:它要读页面才能给你那一页上的东西,要取数才能给你页面之外的那几项。你把这些必须花的认下来,只处理那些可以省掉的,动作就会少很多,也不会一直在做无效的卸载和重装。
还有一个动作是记一笔。你处理完之后记下当时的感受和花了多少时间,过一段时间再看一次。人的感觉会漂移,你记下来的那一笔是你能拿出来对的那一份。没有这一笔,你会每隔几个月就重新怀疑一次同一件事,然后重新折腾一遍。
把这一节收在一句话上:减这件事的顺序是先收范围、再按需开关、再去掉重叠、最后才是换做法。前三个动作都不用你弄懂它的内部,也不用你卸载重装,做一遍通常就能把你感受到的那一截压下去大半。