http://blog.sina.com.cn/s/blog_6868b78d0100kgwp.html
1)
Last-Modified
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:
Last-Modified: Fri, 12 May 2006 18:53:33 GMT
客户端第二次请求此URL时,会在头部加入一个属性,询问该时间之后文件是否有被修改过:
If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
如果服务器端的文件没有被修改过,则返回状态是304,内容为空,这样就节省了传输数据量。如果服务器端的文件被修改过,则返回和第一次请求时类似。
ETag
和Last-Modified类似,由于RFC2616(也就是HTTP/1.1)中没有说明ETag该是什么格式的,只要确保用双引号括起来就行了,所以你可以用文件的hash,甚至是直接用Last-Modified,以下是服务器端返回的格式:
ETag: "50b1c1d4f775c61:df3"
客户端的查询更新格式是这样的:
If-None-Match: W/"50b1c1d4f775c61:df3"
如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。
Expires
这个属性就如我们在ASP中使用HttpResponse.ExpiresAbsolute一样直接,声明某某时刻过期之后浏览器就应该重新请求该URL,使用格式为:
Expires: Sun, 10 Feb 2002 16:00:00 GMT
注意HttpResponse.ExpiresAbsolute在ASP.NET中是不建议使用的,现在我们应该使用的是HttpResponse.Cache.SetExpires。
Pragma
通常我们用到的值就是no-cache,这和在Cache-Control中使用no-cache值是一样的,Cache-Control在下面讲。Pragma的使用格式如下:
Pragma: no-cache
Cache-Control
这是一个集合型属性,它里面能够包含很多子属性,并且允许用户扩展新的子属性。常见的子属性包括:
max-age - 以秒为单位的超时,覆盖Expires属性。
public - 允许保存在共享缓存中。
private - 只允许保存在私有缓存中。
no-cache - 不允许缓存。
no-store - 不允许缓存在持久介质中。
no-transform - 不允许转换存储系统。
2)
众所周知浏览器是通过Last-Modified和Expires来处理缓存的,而在具体调试中发现并不按我们想象的方式进行,其原因很有可能是在刷新浏览器的时候采用不恰当的方式导致。对于大多数浏览器而言,都包含有三种刷新方式,以下我们以IE浏览器为例:
F5 刷新
Ctrl+F5 刷新
“转至”或地址栏里回车 刷新
这些快捷键的功能,主流浏览器都是相同的。
而这三种刷新方式会导致浏览器采取不同的缓存机制:
F5:不允许浏览器直接使用本地缓存,因此Last-Modified能起作用,但Expires无效
Ctrl+F5:是强制刷新,因此缓存机制失效
“转至”或地址栏里回车:正常的访问,Last-Modified和Expires都有效
分享到:
相关推荐
### 浏览器HTTP缓存机制详解 #### 一、概述 HTTP缓存机制是现代Web应用中的一个重要组成部分,它能够显著提升用户体验并减轻服务器负载。本文将详细探讨浏览器HTTP缓存的工作原理及其背后的机制。 #### 二、HTTP...
1. **HTTP缓存机制**:HTTP协议中的Cache-Control、ETag、Last-Modified等头部信息用于控制浏览器如何缓存和验证资源。例如,设置Cache-Control为`no-cache`或`no-store`可以防止浏览器缓存页面,`must-revalidate`...
// 浏览器刷新的情况 } }; ``` 作者还提出了对Firefox的特别处理,因为Firefox在某些情况下只触发`onbeforeunload`事件,而不触发`onunload`。此外,代码中还涉及到使用jQuery的`$.post`方法向服务器发送数据,这...
通过这种方式,即使URL基本部分相同,也会因为随机参数的不同而被视为新的请求,从而绕过浏览器的缓存机制。 ##### 3.2 改变请求方式 另一种解决方案是改变请求方式,将GET请求改为POST请求。根据用户的反馈,这种...
浏览器缓存是互联网浏览过程中的一种常见机制,它用于存储网页上的静态资源,如图片、JavaScript文件和CSS样式表,以加快网页加载速度。当用户访问过的网页再次被打开时,浏览器会优先从本地缓存中读取这些资源,而...
在探讨“ASP.Net使用flash控件时浏览器刷新问题”这一主题时,我们首先需要理解几个核心概念:ASP.Net、Flash控件以及浏览器刷新机制。本文将深入解析如何在ASP.Net应用中有效处理与Flash控件相关的浏览器刷新问题,...
AJAX缓存机制是浏览器为了提高性能和减少网络带宽消耗而设计的一种策略。它与HTTP缓存有密切关系,但也有其独特之处。 首先,理解AJAX缓存的工作原理:当使用AJAX发送请求到服务器时,浏览器会在首次请求时与服务器...
这被称为HTTP缓存机制,主要依赖于HTTP响应头中的`Cache-Control`和`Expires`字段来控制。 在Chrome浏览器中禁用缓存主要有以下几种方法: 1. **使用Chrome开发者工具**:在开发过程中,我们通常可以通过打开...
2. 未过期的:在设定的有效期内,浏览器可使用缓存内容,除非用户手动刷新或页面过期。 3. 过期的:如果页面过期,浏览器必须重新从服务器获取内容。 HTTP Cache涉及的关键头字段包括: 1. Cache-Control:控制缓存...
**Http页面缓存机制** HTTP页面缓存机制是网络应用中的一个重要组成部分,它极大地提高了网页加载速度,减少了服务器压力,并优化了用户体验。在浏览器与服务器之间的通信中,缓存扮演了中间者的角色,将频繁访问的...
Ajax的缓存机制和浏览器处理资源时的缓存机制是一样的。 三条简单规则: 只要是URL相同的GET请求,浏览器会使用缓存(当然还要看服务器的Cache-Control/Expires/Last-Modified/ETag头的设置)。 只要是POST请求,...
CefSharp提供了丰富的API,使得开发人员能够轻松地创建具有类似浏览器界面的应用程序,包括Tab分页、刷新、删除和新窗口等操作。下面我们将详细探讨这些知识点。 首先,我们来看“Tab分页”功能。在Web浏览器中,...
刷新操作在浏览器中分为几种常见类型,每种方式对缓存的处理策略都有所差异,这对于开发者优化网页性能和用户体验至关重要。 1. URL+Enter或A标签的超链接点击刷新:这是最基础的刷新方式,如果用户曾经访问过该...
2. **使用精确的缓存控制**:利用`max-age`参数来精确控制资源的缓存时间,避免过早或过晚地刷新缓存。 3. **优化ETag和Last-Modified**:确保这些头部信息准确反映资源的状态变化,以便浏览器能够根据它们来判断...
在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和CefSharp库来创建一个功能丰富的浏览器应用,其中包括Tab分页、文件下载、收藏、刷新、删除以及新窗口等核心功能。CefSharp是一个.NET...
2. 设置请求缓存机制: 对于需要实时更新的文件,可以在HTTP请求头中设置Cache-Control和Expires,控制缓存行为。 3. 服务器配置: - IIS服务器:通过设置HTTP响应标头,使Web内容过期,控制静态文件的缓存时间。...
总结来说,实现JS+CSS无刷新换肤的关键在于利用JavaScript动态修改CSS文件引用,以及利用浏览器的缓存机制减少网络请求。同时,通过本地存储记录用户的皮肤选择,确保了用户体验的连贯性。在实际项目中,还可以...
例如,`public`表示响应可被任何缓存机制存储,`private`表示仅能被单个用户缓存,`no-cache`要求验证缓存是否过期,`must-revalidate`要求过期后必须验证,`max-age=x`定义缓存有效期。 - `Expires`: 设置资源的...
这个问题的原因是由于浏览器缓存机制导致的,因为即使服务器上的资源已经更新,浏览器仍然可能会从本地缓存中加载旧的资源,而不是重新从服务器获取。特别是当页面结构复杂,例如存在多个iframe嵌套时,刷新机制和...
7. **缓存机制**:为了提高性能,浏览器会缓存网页资源,如图片和CSS文件。这需要一个内存管理和磁盘存储的策略。 8. **安全性**:虽然这个浏览器没有提及安全特性,但任何浏览器都应该考虑SSL/TLS加密、防止跨站...