HTTP 笔记与总结(7)HTTP 缓存(配合 Apache 服务器)

在网络上,有一些缓存服务器,另外浏览器自身也有缓存功能。

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><img src="./a.jpg" alt="">
</body>
</html>

第 1 次访问该页面时,正常下载图片,返回值是 200:  

响应头的抓包分析:

 

 

基于一个前提——图片不会经常改动,服务器在返回 200 的同时,还返回该图片的特征值(签名 ETag),当浏览器再次访问该图片时,就回去服务器椒盐 ETag,如果图片没有变化,则直接使用缓存中的图片,减轻了服务器的负担:

响应头的抓包分析:

 自(If-Modified-Since 的)时间点后图片修改过,则重新请求;如果图片最新的签名(ETag)和上次返回(If-None-Match)的值不匹配,则重新请求。此时响应值是 304,浏览器从本地取缓存,节省了图片在网络上传输的时间。

请求头的 If-None-Match 和 响应头的 Etag 对应,请求头的 If-Modified-Since 和 响应头的 Last-Modified 对应。

 

 

HTTP Cache-Controll 请求头信息

在大型网站中,如何处理主服务器和缓存服务器之间的问题:要不要缓存和缓存多久,需要用到 HTTP Cache-Controll 请求头信息

步骤:

① 主服务器需要开启 mod_expires 模块(Apache 服务器)

利用该扩展来控制图片、css、html 等文件是否缓存以及缓存的生命周期,

 

② 在当前目录下新建 .htaccess 文件

语法

ExpiresDefault "<base> [plus] {<num> <type>}*"
ExpiresByType type/encoding "<base> [plus] {<num> <type>}*" 

 

后面 4 个参数分别表示

base:基于哪个时间点来计算缓存有效期,有两个值:access/now,now 等价于 access,表示基于请求响应的那一瞬间;另一个值是 modification,表示被请求文件的最后修改日期,比如被修改后的一周内仍然有效

 

plus:可选参数

 

num:缓存时间的大小(30)

 

type:缓存时间的单位(天)

 

【例】

给 jpg 图片设置 1 个月的生存周期  

.htaccess:

ExpiresActive On
ExpiresByType image/jpeg "access plus 1 month"

执行页面,抓包分析:

  

如果在集群环境中,缓存服务器得到此图片,将会认为在一个月内有效,减轻了主服务器的负担。

 

 

设置服务器不让用缓存

比如有些个人信息不允许缓存服务器缓存,必须到主服务器请求。

可以利用 apache 服务器的 mod_headers 模块 

 

在 .htaccess 中追加信息

.htaccess:

ExpiresActive On
ExpiresByType image/jpeg "access plus 1 month"<FileMatch "\.(gif|png)$">
header set Cache-Controll "no-store,must-revalidate"
<FileMatch>

使用正则表达式,设置当图片是 gif 或 png 格式的图片时,不允许缓存。

 

修改 cache-01.html  

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><img src="./a.jpg" alt=""><img src="./php.gif" alt="">
</body>
</html>

执行文件,抓包分析:

  

多次刷新页面,php.gif 的响应值都是 200。

 

新浪微博(不允许缓存)的抓包图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux之dos2unix命令解决vi打开文件行尾巴显示^M

1 问题 有时候我们用vi打开文件,行尾巴显示^M,我之前也不知道这个是为什么,后面才了解到,DOS格式的文本文件在Linux平台,用较低版本的vi打开文件行尾会显示^M,DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,…

bootstrap 一排5个_Bootstrap5 列(Columns)

对其使用flexbox对齐工具来垂直和水平对齐列。垂直对齐One of three columnsOne of three columnsOne of three columnsOne of three columnsOne of three columnsOne of three columnsOne of three columnsOne of three columnsOne of three columnsOne of three columnsOne o…

ASP.NET MVC下的四种验证编程方式

ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定。总地来说,我们可以采用4种不同的编程模式来进行针对绑定参数的验证。 目录 一、手工验证绑…

台式计算机idc数据排名,IDC数据出炉 海尔电脑排名持续上升

2011年上半年&#xff0c;国内PC产品呈现缓慢增长态势。近期IDC公布了第二季度最新排名&#xff0c;数据显示&#xff0c;海尔电脑消费类台式机在华北市场持续增长&#xff0c;连续两个季度再度排名亚军。华南市场同样取得了好成绩&#xff0c;台式机由第四上升至第三&#xff…

httpcilent绕过证书

2019独角兽企业重金招聘Python工程师标准>>> 对接其他公司接口&#xff0c;测试环境没有问题&#xff0c;生产环境出现https证书认证的问题&#xff0c; 网上搜了许久才发现一个&#xff0c;链接&#xff1a;http://pan.baidu.com/s/1dEDSmY1 密码&#xff1a;dpsb …

如何让apache支持.htaccess 解决Internal Server Error The server …错误

如何让apache支持.htaccess 解决Internal Server Error The server …错误 文章来源&#xff1a;小灰博客| 时间&#xff1a;2013-12-25 12:17:08| 作者&#xff1a;Leo | 2 条评论 文章分类&#xff1a;IT技术分享、PHP、小技巧 标签&#xff1a; .htaccess、apache 今天…

C# Linq源码解析之All

前言在Dotnet开发过程中&#xff0c;All作为IEnumerable的扩展方法&#xff0c;十分常用。本文对Aggregate方法的关键源码进行简要分析&#xff0c;以方便大家日后更好的使用该方法。使用确定序列中的所有元素是否都满足条件,如果都满足就返回true&#xff0c;如果有一个不满足…

(六)python3 只需3小时带你轻松入门——循环

for循环 使用循环可以重复执行某些代码&#xff0c;可以方便程序编写&#xff1b;但是不记效率的使用循环会使程序运行效率降低。 range 使用range()函数可以生成多个连续整数的range对象(这个概念后面会说)。基本格式&#xff1a;range(end)其中end是结尾数。range(10)则会生…

linux下查看mysql的当前连接情况

为什么80%的码农都做不了架构师&#xff1f;>>> 首先需要登录到mysql中。 总共有三个命令&#xff1a; 1、status mysql> status--------------mysql Ver 14.14 Distrib 5.5.30, for Linux (x86_64) using readline 5.1Connection id: 96Current data…

菜鸟学ASP.NET MVC4入门笔记

ASP.NET MVC 是微软官方提供的以MVC模式为基础的ASP.NET Web应用程序(Web Application)框架,它由Castle的MonoRail而来。 MVC 编程模式 MVC 是三种 ASP.NET 编程模式中的一种。 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。 (…

vue 如何调用微信分享_微信jssdk分享接口,在vue单页应用使用中遇到的问题

微信jssdk分享接口&#xff0c;wx.updateAppMessageShareData&#xff0c;wx.updateTimelineShareData&#xff0c;在vue单页应用使用中遇到的问题&#xff0c;记录一下微信JS-SDK文档&#xff1a;原有的 wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、…

用计算机画图软件画画教程,电脑画图软件有什么使用技巧,电脑画图软件教程...

一、第一步是点击右下角的“开始”图标。在开头上方&#xff0c;出现一个对话框&#xff0c;您找到“所有应用程序”&#xff0c;您右键单击鼠标&#xff0c;在出现的对话框中&#xff0c;您找到“附件”&#xff0c;您左键单击鼠标&#xff0c;在“附件”的右侧出现一个对话框…

JVM-并发-Java 内存模型

Java内存模型 (1). 主内存与工作内存 Java内存模型规定了所有的变量都存储在主内存中&#xff0e; 每类线程的变量的主内存副本拷贝&#xff0c;线程对变量的所有操作&#xff08;读操作&#xff0c;赋值操作等&#xff09;都必须工作内存中进行&#xff0c;而不能直接读写主内…

(七)python3 只需3小时带你轻松入门——List与dict

List列表 python中最基本的数据结构之一。序列&#xff08;或者说集合&#xff09;中的每个元素都分配一个数字用来表示它的位置&#xff08;索引&#xff09;&#xff0c;第一个索引是0&#xff0c;第二个索引是1&#xff0c;依此类推。 索引 索引最大值不能超过当前对象的最…

龙芯推出兼容IE的龙芯浏览器解决方案,全面支持ActiveX插件等应用类型

近期&#xff0c;龙芯中科推出了兼容IE的浏览器解决方案&#xff0c;可全面支持采用ActiveX插件等IE时代技术开发的网页应用。众所周知&#xff0c;IE浏览器因年代久远&#xff0c;已逐步退出历史舞台。但在我国行业和个人应用中&#xff0c;仍存在着大量基于IE浏览器开发的网页…

DPS软件做MK(Mann-Kendall)突变监测分析方法(附DPS 7.05软件下载地址)

Mann-Kendall是一种非参数统计检验方法&#xff0c;具有样本不遵从某一特定分布&#xff0c;不受个别异常值干扰&#xff0c;能够客观地表征样本序列整体变化趋势等优点。 虽然DPS软件具有强大的统计分析和数据可视化功能&#xff0c;但是相关的示例和教程却本博文演示Mann-Ke…

linux之ftp怎么把本地文件拷贝到服务端

1 问题 电脑本地文件怎么通过ftp拷贝到服务端 2 解决办法 我们可以用put命令 put file_path 那我们怎么解决把服务端的文件拷贝到本地呢&#xff1f;很明显啊&#xff0c;我们可以使用get命令 get file_path

clientHeight、offsetHeight 和 scrollHeight

2019独角兽企业重金招聘Python工程师标准>>> window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.availHeight 返回当前屏幕高度(空白空间) window.screen.width 返回当前屏幕宽度(分辨率值) window.screen.height 返回当前屏幕…

计算机应用怎么拼写,计算机应用本科论文提纲格式范文 计算机应用本科论文提纲如何写...

精选了【100个】关于计算机应用本科论文提纲格式范文供您后续的写作参考,在写计算机应用本科论文之前,很多大学生总是被计算机应用本科论文提纲如何写难倒怎么办?请阅读本文&#xff01;五、我国体育院校体育教育专业本科体育信息技术课程体系的构建研究论文提纲中文摘要abstr…

tcpdump 如何kill_如何用tcpdump命令过滤掉一部分的数据包(需用tcpdump命令将截获的信息过滤。)...

你的位置:问答吧-> Linux-> 问题详情如何用tcpdump命令过滤掉一部分的数据包(需用tcpdump命令将截获的信息过滤。)共享上网&#xff0c;需知道各客户端浏览网页时有那些连接是有效的。例&#xff1a;tcpdump -i ppp0 src host 192.168.0.3 and dst port 80那么就可以将所…