温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

IIS中设置缓存的方法是什么

发布时间:2022-01-06 22:02:03 来源:亿速云 阅读:346 作者:iii 栏目:开发技术

这篇文章主要介绍“IIS中设置缓存的方法是什么”,在日常操作中,相信很多人在IIS中设置缓存的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”IIS中设置缓存的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

为什么要缓存图片

简单的说缓存可以通过直接访问内存来提高图片读取速度,缓解因站点高访问量而带来的图片I/O瓶颈。很多时候,图片是一类不经常更新的静态资源,是典型的读远大于写的情况,因此完全满足缓存的原则:一次写入,无数次读取。当然也不是所有满足这点的都会用到缓存,比如上次写的那篇优酷网架构学习笔记中就提到,优酷网在存储视频时并没有大量采用视频缓存技术,原因有二:

  1. Squid 的 write() 用户进程空间有消耗,Lighttpd 1.5 的 AIO(异步I/O) 读取文件到用户内存导致效率也比较低下,这是内存锁造成的。

  2. 如接到老大哥通知要把某个视频撤下来,如果在缓存里是比较麻烦的(这个是亮点,O(∩_∩)O)

但总的来说,对于像图片、视频之类的静态文件,还是非常适合做缓存的。缓存永远是架构师的美丽小三,哈哈。

图片缓存方案探究

接下来就重点来探究一下实现图片缓存的具体方案,文章尽量按人的正常思维来步步深入,从简单到复杂,一起来看看吧,希望看完后能略微提升你的设计品味。时尚的设计是一个不断推敲和磨合的过程,这个相信各位程序猿和攻城狮都深有体会吧。关于这一块,我将分2篇文章来解说,这一篇先介绍如何在IIS等 web容器中设置Http Headers来实现图片的缓存。

注意:这里的web容器是指IIS、Tomcat或者其他的WEB服务器软件,下面我以IIS来举例。

IIS中的缓存分为服务器缓存和客户端缓存,对于静态资源(html、css、js、图片等),服务器缓存是默认开启的,也就是我们在向服务器请求静态资源时,服务器是先从其内存中取文件的,取不到再去硬盘中找(真累啊!),有时候开启服务器缓存很让人讨厌,后面我们会提到。客户端缓存顾名思义是把待请求的资源缓存在客户端的,用户请求资源时先从本地找,找不到再去麻烦服务器。下面先具体谈谈客户端缓存。

1、客户端缓存

如何设置呢?请看下图

IIS中设置缓存的方法是什么
(图片来源)

上图表明开启IIS的缓存模块,并设置过期时间为1天,也就是1天之内,用户访问这张图片时均可以从其本地的缓存副本中读取,而不必来服务器下载,当然1天之后,缓存失效,图片下载后又重新会被载入浏览器缓存中。当然这种方式需要你有管理IIS的权限,我想作为架构师的你这点权限算个皮毛啊。

这个什么原理呀?别急,请听我娓娓道来,小伙子要耐心

这个主要是靠Http Headers来控制的,Http Headers是HTTP请求(Request)和响应(Response)的核心,它承载了关于客户端浏览器,请求页面,服务器等相关的信息。简单地说,它是浏览器和服务器之间交互的信息牌,浏览器通过它告知服务器客户端的相关信息和请求信息(比如我是什么类型的浏览器、我是否可以接收你服务器 gzip过的内容、请求的长度是多少、是否允许缓存等等内容);服务器通过它告知浏览器服务器响应这次请求的相关信息(比如服务器变量、返回的长度、 cookie等信息),具体Http Headers的内容可以参看这篇文章。

了解了Http Headers,那这个缓存问题就好解释了,我的解释如下:当我屁颠屁颠地带着这个Http Headers去向服务器请求空空老师的写真图片时,服务器提取出Http Headers发现其中的Cache-Control是Public的,也就是可以缓存的,然后服务器再看看自己设置的缓存过期时间,发现还没过期,于是告诉我,小子,先在你本地去找空空老师的图片吧,找不到再来向我要。于是我回去找了,发现本地真的有空空老师的写真图,他没有骗我,好开心啊。

不知道我这样解释空空迷们懂了么?不管你懂不懂,我反正是懂了!当然有不正确的地方请指出,谢谢。

2、服务器缓存

上面我已经说过,IIS中的服务器缓存是默认开启的,IIS默认会把静态资源缓存起来,以便快速读取,当静态文件有改动时,缓存也能够自动更新。但是有一个很讨厌的问题,假如我这些图片都是大量的(几百万几千万)且都是实时更新的(比如股票行情图),这样问题来了,我这么多图片一更新,IIS缓存还没来得及更新(量实在是太TM大了),于是我会在很长一段时间内访问到的图片都是旧版本的,这令炒股的我非常懊恼。那么既然它违背缓存的原则,我们怎么禁用它呢?方法绝对没你想得那么简单,我建议大家看看这篇文章,是直接修改MetaBase.xml文件,如果对服务器不熟的家伙是不敢随便动这个文件的,不过架构师的你嘛,这点小儿科了,哈哈哈。

到此,关于“IIS中设置缓存的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

iis
AI