精华内容
下载资源
问答
  • 和文件系统写缓存策略相关的主要是下面两个参数,其它相关参考可自行谷歌: /proc/sys/vm/dirty_ratio 文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向...

    环境说明

    以下针对linux操作系统,在centos/RHEL 6、centos/RHEL 7上测试有效。

    相关参数

    和文件系统写缓存策略相关的主要是下面两个参数,其它相关参考可自行谷歌:

    /proc/sys/vm/dirty_ratio

    文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当需要持续、恒定的写入时,应该降低其数值。

    /proc/sys/vm/dirty_background_ratio

    控制 pdflush 进程在何时刷新磁盘。单位是百分比,表示系统内存的百分比,意思是当写缓冲使用到系统内存多少的时候, pdflush 开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当需要持续、恒定的写入场合时,应该降低其数值。

    对比说明

    vm.dirty_background_ratio: 这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;

    vm.dirty_ratio: 而这个参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存);在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞。

    正常都是先达到vm.dirty_background_ratio的条件然后触发flush进程进行异步的回写操作,但是这一过程中应用进程仍然可以进行写操作,如果多个应用进程写入的量大于flush进程刷出的量那自然会达到vm.dirty_ratio这个参数所设定的坎,此时操作系统会转入同步地处理脏页的过程,阻塞应用进程。

    也就是说,正常vm.dirty_background_ratio < vm.dirty_ratio才有意义。

    在经常有大量写入操作的系统中,应该分别调低这两个参数的值,加快数据刷盘的频率,从而避免因系统同步处理文件IO而导致相关进程处于D状态。

    参数修改方法

    临时生效方法(重启后失效):

    echo 5 >/proc/sys/vm/dirty_background_ratio
    echo 10 >/proc/sys/vm/dirty_ratio

    或者

    sysctl -w vm.dirty_background_ratio=5
    sysctl -w vm.dirty_ratio=10

    永久生效方法:

    echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf
    echo "vm.dirty_ratio = 10" >> /etc/sysctl.conf
    sysctl -p /etc/sysctl.conf

    参考:
    http://blog.sina.com.cn/s/blog_448574810101k1va.html

    转载于:https://blog.51cto.com/dangzhiqiang/2113552

    展开全文
  • 一、过期策略expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收。   当达到过期时间,缓存值被置为Null,限制只有1个用户线程去执行新值的加载,其他请求必须阻塞等待这个加载操作完成。在加载完成...
    一、过期策略expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收。

      当达到过期时间,缓存值被置为Null,限制只有1个用户线程去执行新值的加载,其他请求必须阻塞等待这个加载操作完成。在加载完成之后,其他请求的线程会逐一获得锁,去判断是否已被加载完成,每个线程必须轮流地走一个“”获得锁,获得值,释放锁“”的过程,这样性能会有一些损耗。频繁的过期和加载,锁等待等过程会让性能有较大的损耗。

    二、刷新策略refreshAfterWrite:当缓存项上一次更新操作之后的多久会被刷新。

      在refresh的过程中,限制只有1个请求线程进行重新加载操作,也可开线程异步获取新值,所有请求都暂时返回旧值。如果只是重写load()则是某个请求线程加载新值,如果重写了reload()则是异步加载新值,而其他查询先返回旧值,这样有效地可以减少等待和锁争用,所以refreshAfterWrite会比expireAfterWrite性能好。
      但是它也有一个缺点,因为到达指定时间后,guava cache并不会主动刷新到新值,它没有定时清理和加载的功能,而是依赖于查询请求。在查询的时候去比对上次更新的时间,如超过指定时间则进行加载或刷新。所以,如果隔了很长一段时间再去查询,得到的这个旧值可能来自于很长时间之前,这将会引发问题。

    三、混合策略:refreshAfterWrite + expireAfterWrite

    利用refreshAfterWrite进行刷新,利用expireAfterWrite进行兜底,防止过长时间之后返回旧值。因此,expireAfterWrite可以设置的比refreshAfterWrite大一些。

    参考:
    https://blog.csdn.net/abc86319253/article/details/53020432
    https://blog.csdn.net/aitangyong/article/details/53504253
    https://www.jianshu.com/p/64b0df87e51b

    展开全文
  • 浏览器页面不同的刷新方式,会如何改变浏览器对缓存的处理策略

    前言

    平时我们通过浏览器访问网页,在刷新页面时,其实不同的刷新方式,会改变浏览器对缓存的处理策略。

    不同的刷新方式及其缓存处理策略说明

    1. 浏览器地址栏回车

      浏览器地址栏输入一个网址,然后按回车键 Enter,浏览器会“直接使用有效的缓存”,不会发送 HTTP 请求去服务器验证缓存,专业术语称之为“缓存命中”。

    2. F5 快捷键

      直接按 F5 快捷键刷新页面,浏览器会去Web服务器验证缓存。

    3. Ctrl + F5 快捷键

      按快捷键 Ctrl +F5 刷新页面,会强制刷新浏览器,浏览器不使用缓存。

    实例演示

    演示准备工具

    • Fiddler 一款Web调试工具,能够记录客户端和服务端的 HTTP/HTTPS 请求。
    • Firefox 一款浏览器客户端
    1. 启动Fiddler,打开Firefox,访问博客园主页 https://www.cnblogs.com/ ,发现Fiddler会话列表中有50多个session(这里是57个会话),且由于是首次成功访问,所以 HTTP/HTTPS 的响应码都是200。
      在这里插入图片描述
    2. 切换到Fiddler,按 Ctrl + X 快捷键将Fiddler会话列表中的所有session删除,以便方便对比查看
      在这里插入图片描述
    3. 切换到Firefox,新打开一个标签页,在浏览器地址栏输入网址 https://www.cnblogs.com/,然后按回车,转到Fiddler,可以发现,Fiddler会话列表少了很多session,所有这些少了的session是因为浏览器会“直接使用有效的缓存”,不会发送HTTP请求,故会话列表当然不会有相关记录了。
      在这里插入图片描述
    4. 清除Fiddler会话列表后,切换到Firefox,直接按 F5 刷新博客园主页,又切换回Fiddler,发现跟“地址栏输入网址回车”这种方式相比,会话列表的session个数比较多(跟首次访问博客园主页的个数相差无几),因为此时浏览器会去Web服务器验证缓存,也就是发了HTTP/HTTPS请求,故Fiddler当然会记录并显示在会话列表中。又由于服务端验证缓存时发现客户端有缓存,就响应客户端304状态码。
      在这里插入图片描述
    5. 清除Fiddler会话列表后,切换到Firefox,按 Ctrl +F5 ,强制刷新浏览器,又切换到Fiddler,发现跟“首次访问博客园”相比,无论是session个数以及响应码都为200的情形,都是一致的。点击选择一个session,通过Fiddler界面右边的Header标签页,可以发现浏览器发送的请求头中设置了Cache-Control: no-cache,即明确告知服务端,浏览器我不使用缓存,给我最新的响应。另外,Pragma: no-cache 的作用跟Cache-Control: no-cache一模一样,只不过前者是在HTTP1.0中定义的,此处浏览器为了兼容才同时使用两者。
      在这里插入图片描述
    展开全文
  • squid的缓存决定因素和刷新策略

    千次阅读 2009-12-04 00:24:00
    1) 是否缓存squid本质是缓存url,对于一个url能否缓存,取决与两个因素,一个是配置,一个response头,缺一不可1.1) 配置比如有可能存在下面的配置就对url中带cgi-bin或者?的不缓存acl QUERY urlpath_regex cgi-bin...

    1) 是否缓存
    squid本质是缓存url,对于一个url能否缓存,取决与两个因素,一个是配置,一个response头,缺一不可

    1.1) 配置
    比如有可能存在下面的配置就对url中带cgi-bin或者?的不缓存
    acl QUERY urlpath_regex cgi-bin /?
    cache deny QUERY

    squid3.0默认没有上面的配置,之前的版本是有的

    1.2)response头
    对于静态页面来说,服务器会自动加上Last-Modified头,这使得squid可以缓存,
    但不确定缓存时间,所以需要使用refresh-pattern指令来确定

    对于动态内容来说,原始服务器不会添加影响缓存的头,所以squid对动态内容不做缓存,其实
    squid是无法识别动态或者静态,完全是通过response头来决定缓存与否,所以要想缓存动态内容
    必须通过程序添加response头来迫使squid缓存,
    比如Expire或者Cache-Control:max-age或者Last-Modified(需小于Date),当然也可以组合使用
    个人组合Expire和Last-Modified还是不错,Expire明确指名了缓存过期时间,所以无须使用refresh_pattern
    Last-Modified头可以使得浏览器比如IE,在请求中加入If-Modified-Since
    此时连squid只用返回304让浏览器从本地取页面。

    2)缓存刷新策略

    2.1)术语

    2.2)刷新策略

    展开全文
  • ibatis 缓存配置策略

    2011-06-01 08:41:29
    ibatis 缓存配置策略,学习篇 • iBatis对查询结果集进行本地缓存。 • Cache的key由haskcode、checksum、查询参数、sqlmap Id、sql语句、调用方法名等构成。由此可以看出,不同的参数会有不同的Key。注意,他不是以...
  • 什么是HTTP缓存HTTP 缓存可以说是HTTP性能优化...一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,节省网络流量,并且由于缓存文件可以重复利用,降低网络负荷,提高客户端响应。所以,学会利用HTTP缓存是...
  • 和文件系统写缓存策略相关的主要是下面两个参数,其它相关参考可自行谷歌: /proc/sys/vm/dirty_ratio 文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向...
  • Kafka日志刷新策略

    2021-01-28 09:14:01
    Kafka的日志实际上是开始是在缓存中的,然后根据策略定期一批一批写入到日志文件中去,以提高吞吐率。 属性名 含义 默认值 log.flush.interval.messages 消息达到多少条时将数据写入到日志文件 10000 log.flush....
  • JWTToken超时刷新策略

    万次阅读 热门讨论 2018-09-18 20:55:50
    背景:项目使用的shiro+jwt来做整套权限加请求安全验证,但是jwt的token自己没有超时刷新机制,所以这里简单贴出解决方案。解决方案使用Cache做缓存(使用redis也可以,效果相同)。 /** * JWTToken刷新生命...
  • 本文将会通过实例说明如何通过AOP自定义一个缓存策略,主要是调整缓存刷新的时间节点,兼顾查询速度的同时,保证数据的可靠性 一般情况下, 缓存失效是由缓存框架来进行管理的,用户可以通过设置ttl来指定key的有效...
  • 图片加载缓存策略

    2018-12-03 23:08:49
    目的:图片及时刷新,高速缓存,不闪现; 实现: 1、网络图片url:必须保证每个版本的url地址都不一样,客户端一般使用url作为key来缓存 2、加载策略: (1)layout文件,固定图片大小,并且声明一张默认图片 ...
  • WKWebView 网页缓存刷新

    千次阅读 2020-04-08 15:59:11
    现象描述 由于后台更新了一个网页,但iOS这边显示的还是旧内容。此现象 ——网页的缓存... NSURLRequestUseProtocolCachePolicy = 0, // 默认策略,具体的缓存逻辑和协议的声明有关,如果协议没有声明,不需要每次重...
  • 前端缓存策略: 已开始生产的项目,用户每次刷新的时候大多数与上...
  • 首先我们从资源被请求时,请求行为和资源缓存的不同来看下HTTP头信息的表现:...缓存策略 当浏览器请求资源文件时,默认会将源资文件缓存到本地以便重复使用,加快网页的加载速度。 浏览器的资源缓存分为 from disk ...
  • 浏览器缓存策略详解

    2021-01-11 18:38:00
    1、为什么要引入浏览器缓存 1、服务器会存在大量重复请求 比如我们每次刷新页面的时候都会发送一次请求到服务器,而多次请求的参数和响应的内容都完全一致,其实这种请求完全就是多余的,我们完全可以就用上一次的...
  • 微信小程序图片缓存策略

    千次阅读 2020-09-01 11:18:29
    他说:”我在阿里云CDN控制台刷新缓存了,都两三天了,还是旧图片。”(后来我看过刷缓存记录,一天前刚刷的,他夸张了。。。) 我说:“那不应该呀,CDN刷新缓存,5分钟就生效了。” 当即拿出我的手机,进小程序...
  • 不同刷新操作,不同的缓存策略 正常操作:强制缓存和协商缓存均有效 手动刷新,强制缓存失效,协商缓存有效 强制刷新:强制缓存和协商缓存均无效 如果对强制缓存和协商缓存还不是很了解的朋友,可以看下我这篇博客...
  • 客户端的头像缓存自然得到更新,之后客户端可以判断当前磁盘的剩余容量,当容量太小的时候,就弹出一个对话框,让用户手动删除缓存。在 iOS 中,假如将缓存放在 Caches 目录,有时系统也会自动清除。客户端的缓存也...
  • Mybatis一级缓存

    2020-06-15 18:26:41
    Mybatis一级缓存一级缓存命中缓存条件缓存清空条件updae清除缓存SqlSession.clearCache() 清除缓存配置缓存刷新策略提交回滚清除缓存Spring集成Mybatis一级缓存失效总结 一级缓存 Mybatis中有2种缓存,分别为一级...
  • 当我们在使用redis作为后台数据库缓存时,通常会有一套比较完善的更新策略,比如:按照某个固定时间过期。但是,在某些特定情况下(意料之外),后台数据已经更新,缓存中的数据需要手动同步。 思路 提取出更新redis...
  • 背景我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页。buffer pool通常由数个内存块加上一组控制结构体对象组成。内存块的个数取决于buffer pool instance的个数,不过在5.7版本中开始默认以128M(可...
  • 系统在发布更新次日,收到客户的投诉,发现登录系统之后,出现页面空白问题,刷新几次后显示正常。查看日志发现: 2019/01/07 10:26:01 [error] 19#0: *833 open() "/.../static/js/0.4a66cb25e7f24262c3f6.js" ...
  • 一、什么是 AOF 持久化策略AOF 即 append only file,当 redis 采用这这种数据持久化策略的时候,每当 redis 服务器收到一条更新命令时,操作结束之后会将这条命令添加到 aof 内存缓冲区,特定的时间下刷新缓冲区到...
  • 仔细查了查,原来是hibernate缓存的问题,众所周知,hibernate是采取二级缓存策略,第一是session级别的缓存,二是sessionfactory级别的缓存,并且默认二级缓存是打开的。(使用缓存需设置配置hibernate.cac
  • 网上有很多资料介绍缓存理论及使用策略,本文就不再涉及了,今天简单将缓存做个归类,重点分享以前在实际业务中碰到场景以及如何使用。接下来主要分两部分介绍:缓存分类与应用实践案例。缓存分类缓存一般有以下几类...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 325
精华内容 130
关键字:

缓存刷新策略