Cache me outside

缓存是一种优化网页加载时间并优化其使用的内存量的持久化机制。

Cache 的定义

出于篇幅限制,本文重点介绍 Web 缓存。 当您加载网站时,网站数据(如图像、视频和 html 文档)将被保存。 重新加载网站后,它不会调用数据库再次获取该数据。 它只是将数据从内存中读取。

缓存以容量换取速度,缓存通常会暂时存储数据的子集,而数据库的数据通常是完整且持久的。

Client Side Caching

客户端缓存通常称为浏览器缓存,尽管客户端缓存是一个稍微宽泛的术语。其运行原理如下图所示:

一旦浏览器从服务器请求数据,它就会将其存储到浏览器创建的文件夹中。 下次打开网页时,它不会调用服务器获取数据,而是从浏览器缓存文件夹中提取数据。

Server Side Caching

服务器端缓存是一个类似的概念,但稍微复杂一些。

一旦用户向网站发出请求,其数据就会存储在服务器上。 下次用户发出请求时,它只需从服务器取回保存的数据,无需从数据库中提取数据,从而节省时间。

这些缓存由站点管理员实现,充当浏览器和源服务器之间的中介。 它们通常也基于 HTTP 缓存指令。

Remote Caching

远程缓存类似于服务器端缓存,但它也可以运行应用程序来序列化和反序列化数据。 不同之处在于您可以控制远程服务器,而不是由其他人操作。

通常通过应用程序代码或使用可以利用内存中数据存储的应用程序框架来检索 Web 内容。

Server-Side vs Remote vs Client Side

主要区别在于网站的数据在本地保存在客户端缓存中,而在服务器端缓存中可以分发给所有用户,而在远程中,数据也得到处理。
大多数精心设计的网站或应用程序将同时使用服务器端和客户端。

Why caching?

通过减少后端资源的负载和网络拥塞,缓存 Web 内容有助于提高网站的响应能力。 - AWS

Downside

如果您尝试访问的网站已更新,则在清除缓存之前您可能看不到更新。 这可能发生在您之前,特别是如果您是一名 Web 开发人员并且您正在尝试更新您网站的设计。 如果缓存存储在您的客户端,解决方案很简单。

这适用于客户端缓存,如果服务器端缓存没有正确处理这种情况,可能会在服务器端缓存上返回错误。
如果您使用远程缓存,它可以处理该错误并为您清除缓存并为您加载新请求。

简而言之,client side cache:

您的网络浏览器(Chrome、Firefox、Safari 或任何您使用的浏览器)决定记住网页的外观,因此不必再次请求服务器发送网页。 这通过消除几乎整个网络通信来节省时间(和带宽)。 但是,如果服务器决定更改网页的外观,您就会遇到麻烦,因为浏览器对它认为页面应该是什么样子的“记忆”现在已经过时了,它会给您一个旧版本的页面而不是新的。 这就是为什么人们有时会告诉您“清除浏览器缓存” - 这会迫使您的浏览器“忘记”页面的外观。 这迫使它向服务器询问页面的新的、更新的版本。

server side cache:

负责生成网页(即,将网页放在一起)的服务器决定记住网页的外观,因此不必再次生成它。 这节省了时间(但不是带宽),因为现在服务器不必经历构建整个页面的麻烦——它可以重新发送上次浏览器请求时发送的任何内容。 但是,如果网页上的任何数据需要更改,服务器将被迫丢弃其对页面外观的“记忆”,并需要重新生成页面。 如果页面真的很复杂并且需要很多时间来生成,这种缓存很有用。

更多Jerry的原创文章,尽在:“汪子熙”:

Client Side Cache 和 Server Side Cache 的区别相关推荐

  1. ls –l total 0_W3 Total Cache与WP Super Cache –打包中的哪一个领先?

    ls –l total 0 W3 Total Cache or WP Super Cache – which one to use? Is one better than the other? If ...

  2. 密码错误频繁登录引发的“library cache lock”或“row cache lock”等待

    密码错误频繁登录引发的"library cache lock"或"row cache lock"等待 对于正常的系统,由于密码的更改,可能存在某些被遗漏的客户端 ...

  3. Cache 工作原理,Cache 一致性,你想知道的都在这里

    欢迎关注方志朋的博客,回复"666"获面试宝典 可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查了一下LRU缓存机制最近有哪些企业喜欢 ...

  4. org.apache.hadoop.ipc.Client: Retrying connect to server异常的解决

    org.apache.hadoop.ipc.Client: Retrying connect to server异常的解决 参考文章: (1)org.apache.hadoop.ipc.Client: ...

  5. INFO ipc.Client:Retrying connect to server 9000

    hadoop使用bin/start_all.sh命令之后,使用jps发现datanode无法启动 This problem comes when Datanode daemon on the syst ...

  6. Cache 工作原理、Cache 一致性,你想知道的都在这里

    作者 | 桔里猫 来源 | https://zhuanlan.zhihu.com/p/386919471 可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查 ...

  7. DNS Tunneling及相关实现——总之,你发起攻击都需要一个DNS server,下载一些工具作为client发起数据,server收集数据并响应...

    摘自:http://www.freebuf.com/sectool/112076.html DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在DNS协议中传输建立通信.因为在我们的网络 ...

  8. 【转载】Java Cache系列之Cache概述和Simple Cache

    原文地址:http://www.blogjava.net/DLevin/archive/2013/10/15/404770.html 前记:最近公司在做的项目完全基于Cache(Gemfire)构建了 ...

  9. Asp.net中的Cache--HttpRuntim.Cache 和 HttpContext.Current.Cache

    在ASP.NET中有两个类都提供缓存支持, 一个是HttpRuntime类的Cache属性, 另一个是HttpContext类的Cache属性. 通过查看这两个属性的类型可以发现其实这两个属性都是Sy ...

最新文章

  1. 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理
  2. 干货 | 详解对象检测模型中的Anchors
  3. linux每日命令(14):less命令
  4. Linux 下shell中exec解析
  5. 正则表达式的固化分组
  6. 米斯特白帽培训讲义 漏洞篇 代码执行
  7. 简约竞聘个人简历自我介绍PPT模板
  8. 批量替换 Word 文档前几页
  9. 将一个自然数拆分为N个自然数
  10. H.264再学习 -- 详解 H.264 NALU语法结构
  11. android 百度地图系列之结合方向传感器的地图定位
  12. 上海航芯|物联网安全芯片ACL16简介
  13. 从ARM处理器,看“贵云黔芯”国产自主安全解决方案
  14. 数据库系统概论 第三章 第五大题 实验报告
  15. wpf MessageBox 消息框
  16. Population and carrying capacity 的第三个阶段:Crowding affects births
  17. 腾讯要建超级大脑,用三张网实现AI in All万物互联
  18. 博士毕业论文的最后一章,我感谢了还活着的自己
  19. 查看RocketMQ的broker启动部分源码分析总结
  20. 图解通信原理与案例分析-3:“家书抵万金“看书信通信背后的通信原理

热门文章

  1. python使用rabbitMQ介绍五(话题模式)
  2. 1月24日学习内容整理:Django的admin组件源码分析及流程
  3. 登陆工行网上银行报60058017错误及输入正确网银密码提示密码不正确
  4. 解决pl/sql devloper 中数据库操作语句中文乱码的问题
  5. Jquery each() 如何操作动态添加的DOM元素
  6. 图解Android事件传递之ViewGroup篇
  7. [Domino]Java访问Domino必需配置的服务器设置
  8. EL表达式 JSTL(详解)
  9. 实现一个正则表达式引擎in Python(三)
  10. HDU 6321 Problem C. Dynamic Graph Matching (状压dp)