HTTP协议控制浏览器缓存HTTP协议控制浏览器缓存

HTTP协议控制浏览器缓存

2015.01.25 SilenceHurts

当我们浏览网站的图片时,按下F12监控,很容易就发现,当我们第一次浏览该图片时,浏览器返回的代码是200,即请求正常,此时,不懂任何东西,我们按下F5刷新页面,注意,我们会发现监控下的代码返回不再是200,而是现实304 Not Modifid,即未修改。

原因:第一次我们访问图片时,是正常的,而第二次访问时现实304,因为此时我们浏览器发现页面未发生更改,此时使用的是本地的缓存,而并非服务器返回的代码,加快了速度。

设置服务器缓存

若某网站有N台缓存服务器,其与主机服务器键使用HTTP协议的cache-control来控制哪些东西该缓存,哪些东西不需要缓存.

具体用法:

1.打开Apache服务器的mod_expires.so模块

????LoadModule expires_module modules/mod_expires.so

????重启服务器 httpd –k restart

2.在需要设在缓存的目录中建立 .htaccess文件

并且添加: 如图 第7,8两行

ExpiresActive On????????????//开启缓存

ExpiresByType image/png "access plus 30 seconds"????//针对png图片,缓存生命周期30s

?

?

基本语法:

ExpiresDefault "<base> [plus] { <num> <type>}"

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

?

参数:????????

base: 设置基于哪个时间来了计算缓存日期

????Access / now :基于服务器现行的那一瞬间来开始计算缓存日期

????Modifications: 基于被修改的最后一个日期开始计算缓存日期

<type>: 缓存日期计算单位 如:seconds ,minutes, days, weeks 等

?

?

设置服务器无缓存

使用 头信息Control-cache : no-store,must-revalidate

告诉浏览器该页面不允许缓存,必须去主服务器验证,比如验证码或者一些比较私密的信息等

?

具体用法:

1.在http.conf中开启mod_header.so模块

重启服务器 Http –k restart

2.在要设置无缓存的目录添加.htaccess文件

ExpiresActive On

ExpiresByType image/png "access plus 30 seconds"

<FilesMatch "\.(png|gif)$">????????//如果是PNG 图片 或者 gif 图片则不缓存

header set Cache-control "no-store,must-revalidate"

</FilesMatch>

?

?

同时也可以加入下面两属性来控制图片的不缓存:

header unset Etag????????//来设置不设置 图片签名 Etag

header unset Last-Modified

?

?

?

?

到此时,当我们设置好不缓存,我们浏览图片时,即便是同一张图片,我们也一直刷新也显示的是200,不再是显示304了

时间: 2024-10-11 16:51:12

HTTP协议控制浏览器缓存HTTP协议控制浏览器缓存的相关文章

浅析http协议、cookies和session机制、浏览器缓存

http协议中headers,cookies.session.缓存等相关知识,发现些新知识点. 这篇文章注重结合PHP去理解这些内容,也就是比较注重实践部分. 一.http headers           NO1:对于web应用,用户群在客户端 (各种浏览器)点击任何一个连接向服务器发送http请求,这过程肯定需要3次握手,建立连接,服务器响应返回数据. 每次请求都有头部和实体部分,先看下面笔者监听QQ空间的headers,QQ空间的原因是它头部内容比较全 ? 1 2 3 4 5 6 7 8

网页的缓存Cache与控制

什么是缓存 Cache? 缓存位于客户端与服务器之间, 或者服务器与服务器之间.它决定是否保存所获资源的副本,以及如何使用副本,何时更新副本,这里所说的资源包括页面的HTML, 图片,文件等等. 使用缓存主要有2大理由: 减少响应延迟,让页面显示更快:因为缓存比源服务器离客户端更近, 如果直接从缓存而不是源服务器响应客户的请求,耗时更少,让网站看上去响应更快: 减少网络带宽消耗:当副本被重用时,减少了从源服务器获取资源的次数,从而减少带宽消耗. 缓存如何工作? 所有的缓存都遵循以下基本规则 保留

多线程之缓存一致性协议

前言: CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要 高速的数据.为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 首先在电脑中,CPU读取RAM中的数据数据的流程是,通过I/O总线(BUS),将数据从RAM中获取需要操作的数据进CPU需要如下几个步骤 CPU中的三级缓存从RAM中获取该数据. CPU中的二级缓存从三级

360浏览器是因为帮客户控制渲染内核

360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name="renderer" content="webkit"/> 若页面需默认用ie兼容内核,增加标签:<meta name="renderer" content="ie-comp"/> 若页面需默认用ie标准内核,增加标签:<meta name="renderer" content=&qu

多线程之:MESI-CPU缓存一致性协议

MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用在Intel奔腾系列的CPU中,详见“support the more efficient write-back cache in addition to the write-through cache previously used by the Intel 486 processor” MESI

聊聊高并发(五)理解缓存一致性协议以及对并发编程的影响

Java作为一个跨平台的语言,它的实现要面对不同的底层硬件系统,设计一个中间层模型来屏蔽底层的硬件差异,给上层的开发者一个一致的使用接口.Java内存模型就是这样一个中间层的模型,它为程序员屏蔽了底层的硬件实现细节,支持大部分的主流硬件平台.要理解Java内存模型以及一些处理高并发的技术手段,理解一些基本的硬件知识是必须的.这篇会说一下跟并发编程相关的一些硬件知识. 一个基本的CPU执行计算的过程如下: 1. 程序以及数据被加载到主内存 2. 指令和数据被加载到CPU的高速缓存 3. CPU执行

多核程序设计——缓存一致性协议MESI

MESI协议 在MP系统中,每个CPU都有自己独立的cache,缓存之间的一致性很很容易受到破坏的,所以缓存一致性协议就应运而生了.MESI是一种使用非常广泛的缓存一致性协议. MESI存在"modified","exclusive","shared"和"invalid"四种状态,协议可以在一个指定的缓存中应用这四种状态.因此,协议在每一个缓存行中维护一个两位的状态"tag",这个"tag&quo

一篇文章让你明白CPU缓存一致性协议MESI

CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要高速的数据.广州SEO为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理. **时间局部性(Tempora

缓存一致性协议MESI

1. 缓存一致性协议的由来: 计算机的存储设备速度与cpu的运算速度之间是数量级的差距,现代计算机不得不加入一层读写速度尽可能接近cpu运算速度的高速缓存来作为内存和cpu之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样cpu就无须等待缓慢的内存读写了. 基于高速缓存的存储交互很好地解决了cpu与内存的速度矛盾,但是也引入了新的问题:缓存一致性.在多cpu系统中,每个cpu都有自己的高速缓存,而它们又共享同一主内存,当多个cpu的运算任务

atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结

atitit.浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结 1. 缓存的一些机制 1 1.1. http 304 1 1.2. 浏览器刷新的处理机制 1 1.3. Expires 2 1.4. Cache-Control 2 1.5. Last-Modified/E-tag 3 1.6. Etag 主要为了解决 Last-Modified 无法解决的一些问题. 4 2. 不同的页面打开方式产生的请求区别 5 3. html  meta法 5 4. http head 法