http://www.workcss.com/ 我们知道,对于WEB页面中的JS和CCS,并不会每次都请求完整的内容,有时候会直接利用本地的缓存;而对页面本身,却往往会去加载完整内容,对于服务器来说可能每次也要生成完整的内容,并送到客户端;同样的,对于一些http接口,每次调用也会去
我们知道,对于WEB页面中的JS和CCS,并不会每次都请求完整的内容,有时候会直接利用本地的缓存;而对页面本身,却往往会去加载完整内容,对于服务器来说可能每次也要生成完整的内容,并送到客户端;同样的,对于一些http接口,每次调用也会去重新生成数据,浏览器也会重新加载完整的数据;
但有这样一些页面,虽然是动态的但变动频率较小,且对于同一用户重复调用可能很多(比如说个人管理后台或者新闻首页面),我们希望像js或者ccs那样在客户端缓存起来.并且,在我们希望的时候,可以更新客户端备份的那个页面,或者接口数据.是否可以做到呢;
事实上,浏览器可以缓存js,就一定能缓存我们的动态页面;
先研究下js是如何缓存起来的:
用firebug看一下js的加载:
先强刷(ctrl+F5)一下 http://www.workcss.com/页面,观看js的加载如图
状态为200 , 查一下200的含意 :
请求成功(其后是对GET和POST请求的应答文档。)
这是对js文件的完整加载; 再直接F5刷新下 http://www.workcss.com/ ,观看js的加载如图 状态为304,再查一下304的含意: 未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since
这是对js文件的完整加载;
状态为304,再查一下304的含意:
未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
此时其实并没有从服务端加载完整文件而是去读的本地缓存;
从304的描述来看,我们知道,请求依然发出,并由服务端告知浏览器,掉用缓存;
我们可以总结出两点:
1.由于服务端只是返回简单的头信息,并没有生成完整页面,所以虽然请求依然发出,对于浏览器和服务器来说都更快更轻松了;
2.我们可以控制浏览器去更新缓存
相关推荐
在本文中,我们将深入探讨如何使用C# MVC中的HttpModule实现网站防盗链功能以及优化图片的304缓存机制。HttpModule是ASP.NET框架的一部分,它可以捕获HTTP请求并在处理之前或之后进行操作,因此它是实现这些功能的...
强缓存直接使用本地副本,而协商缓存则在资源过期后向服务器验证,如果资源未改变,服务器返回304 Not Modified,浏览器继续使用本地缓存,否则下载最新资源。 为了充分利用双缓存技术,开发者需要注意几个关键点:...
如果服务器返回 304 Not Modified 状态码,表示数据未更改,Volley 将继续使用缓存数据。 6. **清除缓存** 用户或应用可以定期或按需清理缓存,释放存储空间。Volley 提供了相应的 API 来执行此操作。 在实际应用...
ASP.NET缓存技术是提升应用程序性能的关键手段,它通过存储常用数据或计算结果,避免了重复的数据库查询或计算,从而显著减少了响应时间。本文主要总结了ASP.NET中的各种缓存策略及其应用。 首先,我们要了解缓存的...
如果服务器返回304 Not Modified状态码,表示资源未变,浏览器继续使用本地缓存;否则,服务器会返回新资源。 三、HTTP缓存控制头详解 - `Cache-Control`: 这个头部提供了更精细的缓存控制,可以设置`max-age`来...
当浏览器再次请求该资源时,会带上 If-None-Match 头部字段,服务器会根据该字段判断资源是否更新,如果更新了则返回新的资源,否则返回 304 状态码,表示资源未更新,浏览器可以继续使用缓存中的资源。 强制缓存和...
如果资源未更改,则服务器返回304 Not Modified状态码,表明可以使用缓存中的版本。 #### 五、用户行为的影响 - **按 Enter 键**: 此时浏览器默认检查`Expires` 或 `Cache-Control` 字段,如果没有过期,则直接...
服务器根据这些字段判断文件是否发生变化,若无变化则返回304状态码,告知浏览器可以使用缓存中的文件。 在页面刷新方面,通常有三种方式: 1. 点击浏览器的刷新按钮或按下F5,这种方式会优先读取本地缓存,如果...
如果图片已经更新,服务器会返回新图片,否则返回304状态码,告知客户端使用本地缓存。 四、`DiskLruCache`工作原理 `DiskLruCache`的核心思想是利用LRU算法来管理磁盘上的文件。当缓存达到设定的最大容量时,会...
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状态码告知客户端使用本地缓存。 为了有效管理缓存,开发者需要关注缓存的一致性问题,例如...
服务器比较这个`ETag`,如果匹配则返回304 Not Modified,浏览器使用缓存;不匹配则返回新的资源。 - `Last-Modified`: 类似于`ETag`,记录资源的最后修改时间。浏览器在请求中添加`If-Modified-Since`头,包含上次...
例如,设置`If-Modified-Since`为0可以强制服务器检查资源是否已更改,如果未更改,则返回304状态码,而不是实际的数据。 ```javascript xmlHTTP.setRequestHeader("If-Modified-Since","0"); ``` ### JSP与缓存...
#### 什么是Ajax缓存? Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下...
如果服务器返回304状态码,表示数据未改变,Volley会直接从本地缓存中读取。 在"Volley的三级缓存使用"的示例中,我们可以学习如何配置和使用这些缓存机制。首先,我们需要在初始化Volley的RequestQueue时设置缓存...
先来说一下缓存的优点 减少了冗余的数据传递,节省宽带流量 减少了服务器的负担,大大提高了网站性能 加快了客户端加载网页的速度 这也正是HTTP缓存属于客户端缓存的原因 强制缓存 当缓存数据库中已经有了请求的...
当服务器确认资源未被修改时,返回304响应,浏览器便继续使用本地缓存的资源。这节省了网络带宽,提高了页面加载速度。 更新静态资源的常见策略有: 1. **文件名后添加版本号或时间戳**:例如`style-v1.0.css`或`...
如果服务器发现资源未修改,就会返回304响应,客户端则使用本地缓存的资源。 理解浏览器缓存机制对于优化网页性能至关重要。开发者可以通过合理设置HTTP头部字段,指导浏览器正确使用缓存,减少不必要的网络请求,...
通常会配合HTTP的ETag或Last-Modified头信息,实现HTTP级别的缓存,使得服务器只需要返回304状态码,客户端就可以从本地缓存中加载图片,进一步节省网络带宽。 4. **图片缓存实现**: 在示例代码中,`ImageManager...
2. **协商缓存**:当强制缓存失效时,客户端会向服务器发送带有缓存验证信息(如`If-Modified-Since`或`If-None-Match`)的HTTP请求,由服务器决定是否返回304状态码(未修改)来告知客户端使用缓存。 #### 二、...