缓存在WEB开发中的作用

    最近一直在读《Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版》这本书,发现很多有启发性的最佳实践,从Session、Cookie到现在的缓存,都是WEB开发中必不可少的元素!现就WEB开发中的缓存进行简单的介绍。

    很多应用程序耗费了大量的时间来重复做同样的事情。譬如说,blog应用要为每个访客显示“当前文章”的列表,网上商店要为每个察看货品的用户显示同样的“货品详情”页面。
    这些重复操作会耗费服务器的资源与时间。显示一个blog页面也许需要执行好几次数据库查询,再加上调用好几个Ruby方法、渲染好几个Rails模板。单就这一次请求来说,这不是什么大问题;但如果乘上每小时几千次点击,也许问题就大了——服务器会不堪重负,用户会发现响应时间越来越长。
    像这种时候,缓存可以极大地减轻服务器负担、提高应用程序的响应能力:我们可以把创建好的结果记下来,遇到同样的请求时重复使用现成的结果,而不必每次都重新创建。

    缓存技术不应该滥用,我们需要针对业务需要进行合理设置。比如:对可以公开访问的数据进行页级缓存,这种缓存方式非常高效,相当于访问静态页面一样!对有限制的资源进行访问过滤,这就不适用与页级缓存了!

    缓存什么?

    确切的说不应该缓存那些资源!不应该使用缓存的资源主要针对不依赖于URL的资源(内容不仅仅取决于URL),那么页面就不应使用缓存,这样的页面包括:

    (1)与时间有关的页面;

    (2)内容依赖于Session信息的页面,譬如页面是针对用户进行定制的,那么就不应该对其进行缓存!

    (3)根据你无法控制的外部数据生成的页面,比如使用的数据需要不断更新。

    缓存的数据失效策略

    缓存的数据不可能是一成不变的,它随时可能改变。当页面发生改变时,我们能及时更新,重新生成缓存界面,这才是最值得我们关注的!当然,这就要我们通过各种手段实时进行检测,以使最快更新缓存!

    在客户端实现缓存

    从技术角度,我们都倾向于从服务器端下手,但是客户端通常也是最有效的方式!我们可以在客户端进行设置,效果同样十分明显!我们可以通过HTTP头来优化这些缓存(减轻服务器端压力)。

    设置过期头: 最有效率的查询是不做查询。有些经常访问的页面不需要经常改变(尤其是图像、脚本、样式表),一种方式是重新检索到达服务器前进行优化,这可以通设置过期头实现。


你可能感兴趣的:(缓存在WEB开发中的作用)