使用Ctrl + F5清除varnish缓存
来源:互联网 发布:java sql解析器 开源 编辑:程序博客网 时间:2024/06/05 20:48
这在我们的生产环境中,是相当有用的。编辑上传图片后,直接按Ctrl + F5强制刷新web页面,即可刷新web页面包括其它资源。
具体的原理是当用户使用ctrl + F5强制刷新浏览器时,浏览器会添加如下请求头信息:
Pragma no-cache
Cache-Control no-cache
这两行header, 那么只要在varnish中捕获这些header, 就可以ctrl + F5清除缓存了,配置非常简单
在default.vcl 的 sub vcl_hit事件中增加以下代码:
if ( req.http.Pragma ~ "no-cache" ) {
set obj.ttl = 0s ;
return (pass);
}
常用的代码如下:
sub vcl_hit {
if (!obj.cacheable) {
return (pass);
}
if ( req.http.Pragma ~ "no-cache" ) {
set obj.ttl = 0s ;
return (pass);
}
return (deliver);
}
这段代码告诉varnish, 当请求header Pragma中包含no-cache时,清理缓存(obj.ttl=0s),并直接从后端服务器取得数据( 即return (pass) );
但是这样一来,任何人使用Ctrl + F5即可清除缓存,这样存在一定问题,可以考虑使用限制IP来源,只允许部分IP通过这种方式来清楚缓存。如以下代码:
acl local {
"192.168.11.68";
"1.2.3.4";
}
sub vcl_hit {
if (!obj.cacheable) {
return (pass);
}
if (client.ip ~ local && req.http.Pragma ~ "no-cache") {
set obj.ttl = 0s;
return (pass);
}
return (deliver);
}
另外,也可以使用Cookie传递密码方式验证,只有Cookie中传递的密码正确,才清除缓存。
准备工作:给firefox安装 Modify Header插件,设置Cookie, 比如设置Cookie : pwd=123456, 则varnish的配置:
if ( req.http.Cookie ~ "pwd=123456" && req.http.Pragma ~ "no-cache" ) {
set obj.ttl = 0s ;
return (pass);
}
借助VCL强制的控制结构,可以做任何逻辑验证。
- 使用Ctrl + F5清除varnish缓存
- Varnish purges 缓存清除
- Varnish purges 缓存清除技术研究
- varnish清除缓存的方法
- 管理varnish(ctrl+F5強制刷新問題)
- F5与CTRL+F5区别,浏览器缓存机制
- 清除缓存-Ctrl+Shift+Delete
- varnish配置通过url清除缓存
- varnish缓存清除的问题和陷阱
- Varnish purges 缓存清除技术研究[原创]
- java程序清除指定的varnish缓存
- enter || f5 || ctrl+f5
- 浏览器 回车、F5、Ctrl+F5
- Varnish缓存
- Pycharm使用技巧:Ctrl + F5(重新运行)
- Web缓存服务器:使用Varnish代替Squid
- C# F5和ctrl+F5的区别 ?
- Ctrl+F5与F5的疑惑
- matlab code 对齐 以及 vs 2008 等的代码编辑与对齐
- Android设置多个定时器时只有最后一个定时器有效的问题
- iOS开发中一些有用的小代码(持续更新)
- 细说Sybase数据库日志
- C++学习笔记之操作符使用注意。
- 使用Ctrl + F5清除varnish缓存
- Log4j学习笔记(1)_log4j 基础架构&配置项解析
- oracle远程导入导出
- C#.NET使用HTML模板发送电子邮件
- Linux的中断处理:work_struct的使用实例
- linux下进程容纳多少线程数
- windows下oracle修改参数ORA-02095错误
- 用SurfaceView,Timer以及Handler实现的一个带有音乐和文字的电子相册,可以自动播放~
- 给编程开发者建议的书籍