`
AutomaticThoughts
  • 浏览: 165442 次
社区版块
存档分类
最新评论

什么是304缓存

 
阅读更多

什么是304缓存?如何理解304与200服务器知识,前端开发优化实战

时间:2011-09-03 19:07  来源:http://www.workcss.com/  作者:蜗客div+css  点击:754次
http://www.workcss.com/ 我们知道,对于WEB页面中的JS和CCS,并不会每次都请求完整的内容,有时候会直接利用本地的缓存;而对页面本身,却往往会去加载完整内容,对于服务器来说可能每次也要生成完整的内容,并送到客户端;同样的,对于一些http接口,每次调用也会去

我们知道,对于WEB页面中的JSCCS,并不会每次都请求完整的内容,有时候会直接利用本地的缓存;而对页面本身,却往往会去加载完整内容,对于服务器来说可能每次也要生成完整的内容,并送到客户端;同样的,对于一些http接口,每次调用也会去重新生成数据,浏览器也会重新加载完整的数据;


但有这样一些页面,虽然是动态的但变动频率较小,且对于同一用户重复调用可能很多(比如说个人管理后台或者新闻首页面),我们希望像js或者ccs那样在客户端缓存起来.并且,在我们希望的时候,可以更新客户端备份的那个页面,或者接口数据.是否可以做到呢;


事实上,浏览器可以缓存js,就一定能缓存我们的动态页面;


先研究下js是如何缓存起来的:


用firebug看一下js的加载:


先强刷(ctrl+F5)一下 http://www.workcss.com/页面,观看js的加载如图

304页面
 
 
状态为200 , 查一下200的含意 :

请求成功(其后是对GET和POST请求的应答文档。)
 这是对js文件的完整加载; 再直接F5刷新下 http://www.workcss.com/ ,观看js的加载如图 状态为304,再查一下304的含意: 未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since

这是对js文件的完整加载;

再直接F5刷新下  http://www.workcss.com/,观看js的加载如图
 
 
304页面
 
 
状态为304,再查一下304的含意:

未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

此时其实并没有从服务端加载完整文件而是去读的本地缓存;

从304的描述来看,我们知道,请求依然发出,并由服务端告知浏览器,掉用缓存;

我们可以总结出两点:

1.由于服务端只是返回简单的头信息,并没有生成完整页面,所以虽然请求依然发出,对于浏览器和服务器来说都更快更轻松了;

2.我们可以控制浏览器去更新缓存
分享到:
评论

相关推荐

    C# MVC HttpModule 防盗链和图片304缓存

    在本文中,我们将深入探讨如何使用C# MVC中的HttpModule实现网站防盗链功能以及优化图片的304缓存机制。HttpModule是ASP.NET框架的一部分,它可以捕获HTTP请求并在处理之前或之后进行操作,因此它是实现这些功能的...

    双缓存技术

    强缓存直接使用本地副本,而协商缓存则在资源过期后向服务器验证,如果资源未改变,服务器返回304 Not Modified,浏览器继续使用本地缓存,否则下载最新资源。 为了充分利用双缓存技术,开发者需要注意几个关键点:...

    volley 缓存

    如果服务器返回 304 Not Modified 状态码,表示数据未更改,Volley 将继续使用缓存数据。 6. **清除缓存** 用户或应用可以定期或按需清理缓存,释放存储空间。Volley 提供了相应的 API 来执行此操作。 在实际应用...

    ASP.NET缓存技术应用总结

    ASP.NET缓存技术是提升应用程序性能的关键手段,它通过存储常用数据或计算结果,避免了重复的数据库查询或计算,从而显著减少了响应时间。本文主要总结了ASP.NET中的各种缓存策略及其应用。 首先,我们要了解缓存的...

    HTTP网络缓存代码实例

    如果服务器返回304 Not Modified状态码,表示资源未变,浏览器继续使用本地缓存;否则,服务器会返回新资源。 三、HTTP缓存控制头详解 - `Cache-Control`: 这个头部提供了更精细的缓存控制,可以设置`max-age`来...

    强制缓存和协商缓存资源

    当浏览器再次请求该资源时,会带上 If-None-Match 头部字段,服务器会根据该字段判断资源是否更新,如果更新了则返回新的资源,否则返回 304 状态码,表示资源未更新,浏览器可以继续使用缓存中的资源。 强制缓存和...

    浏览器HTTP缓存机制

    如果资源未更改,则服务器返回304 Not Modified状态码,表明可以使用缓存中的版本。 #### 五、用户行为的影响 - **按 Enter 键**: 此时浏览器默认检查`Expires` 或 `Cache-Control` 字段,如果没有过期,则直接...

    UrlRewriter 缓存问题及一系列的相关探索

    服务器根据这些字段判断文件是否发生变化,若无变化则返回304状态码,告知浏览器可以使用缓存中的文件。 在页面刷新方面,通常有三种方式: 1. 点击浏览器的刷新按钮或按下F5,这种方式会优先读取本地缓存,如果...

    图片三级缓存JAR包

    如果图片已经更新,服务器会返回新图片,否则返回304状态码,告知客户端使用本地缓存。 四、`DiskLruCache`工作原理 `DiskLruCache`的核心思想是利用LRU算法来管理磁盘上的文件。当缓存达到设定的最大容量时,会...

    nginx静态文件缓存的解决方案1

    proxy_cache_valid 200 304 12h; proxy_cache_valid 301 302 1d; proxy_cache_valid any 1m; proxy_cache_key $uri$is_args$args; expires 30d; proxy_set_header X-Forwarded-Proto $scheme; } ``` 这里,`...

    数据缓存和图片缓存

    2. 协商缓存:使用ETag和If-None-Match或Last-Modified和If-Modified-Since头进行校验,如果图片未改变,服务器仅返回304状态码告知客户端使用本地缓存。 为了有效管理缓存,开发者需要关注缓存的一致性问题,例如...

    浏览器HTTP缓存运行机制流程图.zip

    服务器比较这个`ETag`,如果匹配则返回304 Not Modified,浏览器使用缓存;不匹配则返回新的资源。 - `Last-Modified`: 类似于`ETag`,记录资源的最后修改时间。浏览器在请求中添加`If-Modified-Since`头,包含上次...

    ajax与jsp清除缓存

    例如,设置`If-Modified-Since`为0可以强制服务器检查资源是否已更改,如果未更改,则返回304状态码,而不是实际的数据。 ```javascript xmlHTTP.setRequestHeader("If-Modified-Since","0"); ``` ### JSP与缓存...

    如何 不使用ajax缓存

    #### 什么是Ajax缓存? Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下...

    Volley的三级缓存使用

    如果服务器返回304状态码,表示数据未改变,Volley会直接从本地缓存中读取。 在"Volley的三级缓存使用"的示例中,我们可以学习如何配置和使用这些缓存机制。首先,我们需要在初始化Volley的RequestQueue时设置缓存...

    谈谈强制缓存和协商缓存

    先来说一下缓存的优点 减少了冗余的数据传递,节省宽带流量 减少了服务器的负担,大大提高了网站性能 加快了客户端加载网页的速度 这也正是HTTP缓存属于客户端缓存的原因 强制缓存 ​ 当缓存数据库中已经有了请求的...

    web服务器缓存静态资源,更新静态资源的规则,静态资源如css,js文件 HTTP CODE 304.zip

    当服务器确认资源未被修改时,返回304响应,浏览器便继续使用本地缓存的资源。这节省了网络带宽,提高了页面加载速度。 更新静态资源的常见策略有: 1. **文件名后添加版本号或时间戳**:例如`style-v1.0.css`或`...

    浏览器缓存机制 mindMaster脑图与visio流程图

    如果服务器发现资源未修改,就会返回304响应,客户端则使用本地缓存的资源。 理解浏览器缓存机制对于优化网页性能至关重要。开发者可以通过合理设置HTTP头部字段,指导浏览器正确使用缓存,减少不必要的网络请求,...

    android中图片的三级缓存cache策略(内存/文件/网络)

    通常会配合HTTP的ETag或Last-Modified头信息,实现HTTP级别的缓存,使得服务器只需要返回304状态码,客户端就可以从本地缓存中加载图片,进一步节省网络带宽。 4. **图片缓存实现**: 在示例代码中,`ImageManager...

    HTML,JSP页面缓存的解决方案

    2. **协商缓存**:当强制缓存失效时,客户端会向服务器发送带有缓存验证信息(如`If-Modified-Since`或`If-None-Match`)的HTTP请求,由服务器决定是否返回304状态码(未修改)来告知客户端使用缓存。 #### 二、...

Global site tag (gtag.js) - Google Analytics