本文以Nginx,Rails,Mysql,Redis作为例子,换成其他web服务器,语言,数据库,缓存服务都是类似的。
以下是3层的示意图,方便后续引用:

web 应用中常用的各种 cache详解-脚本宝典

1. 客户端缓存

一个客户端经常会访问同一个资源,比如用浏览器访问网站首页或查看同一篇文章,或用app访问同一个api,如果该资源和他之前访问过的没有任何改变,就可以利用http规范中的304 Not Modified 响应头(),直接用客户端的缓存,而无需在服务器端再生成一次内容。
在Rails里面内置了fresh_when这个方法,一行代码就可以完成:

class ArticlesController
 def show
  @article = Article.find(params[:id])
  fresh_when :last_modified => @article.updated_at.utc, :etag => @article
 end
end
打赏
  • 打赏支付宝扫一扫
  • 打赏微信扫一扫