![]() |
1.2 为什么使用缓存? |
在看这个问题之前,我们可以先看一下成功的软件产品应具备哪些特点:能解决目标用户的痛点,能够为企业或个人带来利益,具有不错的用户黏性……其中一个极其重要的因素就是要有好的用户体验。
用户体验这个词最早被广泛认知是在20世纪90年代中期,由用户体验设计师唐纳德·诺曼(Donald Norman)提出和推广。信息技术在移动和图像处理等方面取得的进展已经使得人机交互(HCI)技术几乎渗透到人类活动的所有领域。这导致了一个巨大转变──系统的评价指标从单纯的可用性,扩展到范围更丰富的用户体验。用户体验在人机交互技术发展过程中受到了相当的重视,其关注度与传统的三大可用性指标(即效率、效益和基本主观满意度)不相上下,在某些方面说甚至更重要。
ISO 9241-210标准将用户体验定义为“人们对正在使用或期望使用的产品、系统或者服务的认知印象和回应”。因此,用户体验是主观的,且注重实际应用。ISO在定义的补充说明中有着如下解释:用户体验,即用户在使用一个产品或系统之前、使用期间和使用之后的全部感受,包括情感、信仰、喜好、认知印象、生理反应、心理反应、行为和成就等各个方面。ISO标准暗示了可用性也可以作为用户体验的一个方面,“可用性标准可以用来评估用户体验一些方面”。不过,该ISO标准并没有进一步阐述用户体验和系统可用性之间的具体关系。显然,这两者是相互重叠的概念。
有许多因素可以影响用户体验,这些因素被分为三大类:使用者的状态、系统性能及环境。其中系统性能是软件产品自身对用户体验的关键性因素之一。由于感受软件性能的主体是人,不同的人对于同样的软件可能有不同的主观感受,而且不同的人对于软件性能关心的视角也不同。系统性能是一种非功能特性,它关注的不是某种特定的功能,而是在完成该功能时所展示出来的及时性。
系统性能的指标一般包括响应时间、延迟时间、吞吐量,并发用户数和资源利用率等几个方面。
响应时间是指系统对用户请求做出响应的时间,与人对软件性能的主观感受是非常一致的,它完整地记录了整个系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,响应时间通常是指该软件系统所有功能的平均响应时间或者所有功能中的最大响应时间。当然,有时候也需要对每个或每组功能讨论其平均响应时间和最大响应时间。
在讨论软件性能时,我们更关心所开发软件本身的“响应时间”。也就是说,可以把用户感受到的响应时间划分为“呈现时间”和“系统响应时间”,前者是指客户端在接收到系统数据时呈现页面所需的时间,而后者是指客户端接收到用户请求到客户端接收到服务器发来的数据所需的时间。还可以把“系统响应时间”进一步分解为“网络传输时间”和“应用延迟时间”,其中前者是指数据在客户端和服务器端进行传输的时间,而后者是指系统实际处理请求所需的时间。
吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。无并发的应用都是单机应用,对于互联网或者移动互联网上的产品而言,并发用户数是指系统可以同时承载的正常使用系统功能的用户数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。而资源利用率反映的是在一段时间内资源平均被占用的情况。
从浏览器到网络,再到应用服务器,甚至到数据库,通过在各个层面应用缓存技术,整个系统的性能将大幅提高。例如,缓存离客户端更近,从缓存请求内容比从源服务器所用时间更少,呈现速度更快,系统就显得更灵敏。缓存数据的重复使用,大大降低了用户的带宽使用,其实也是一种变相的省钱(如果流量要付费的话),同时保证了带宽请求在一个低水平上,更容易维护。所以,使用缓存技术,可以降低系统的响应时间,减少网络传输时间和应用延迟时间,进而提高了系统的吞吐量,增加了系统的并发用户数。利用缓存还可以最小化系统的工作量,使用了缓存就可以不必反复从数据源中查找,缓存所创建或提供的同一条数据更好地利用了系统的资源。
因此,缓存是系统调优时常用且行之有效的手段,无论是操作系统还是应用系统,缓存策略无处不在。
如果说音乐是时间的艺术,那么,缓存就是软件系统中关于时间的艺术。“缓存为王”本质上是系统性能为王,对用户而言就是用户体验为王。