`

浏览器缓存的研究

阅读更多

 

1. 概述

1.1. 说明

浏览器默认情况下缓存是开启的,当我们向服务器发送某个请求并正确返回(状态码为 200 )的时候,返回的内容(包括页面、图片、 css 文件、 js 文件、 xml 文件等)是自动被缓存的。这样在以后需要请求同样内容的时候,浏览器会先从缓存中查找,如果缓存的内容没有过期,则直接返回缓存的内容,否则则会去服务器再请求一次并返回结果并在浏览器缓存。(如果是刷新页面的情况,则会去服务器检查一次浏览器缓存的内容是否已经有新的更新,如果有新的更新,则重新返回新的内容并缓存,否则(状态码为 304 )则直接从浏览器缓存中取得内容。)

我们的需求只是在第一次请求页面的时候,把以后将要加载的较大文件一次性加载完成并缓存在浏览的缓存中,这样以后访问页面请求同样内容的时候就会直接从缓存中取得了。

由于缓存文件存放在硬盘上一个隐藏目录,所以,即使断电或重启电脑之后,缓存的内容依然存在依然可用。

2. 图片缓存

2.1. 预加载图片代码

 

<html>

<head>

<script type="text/javascript" src="jquery.js"></script>

<script>

function loadImage(url, callback) {

    var img = new Image(); // 创建一个 Image 对象,实现图片的预下载

    img.src = url;

  

     if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数

        callback.call(img);

        return; // 直接返回,不用再处理 onload 事件

    }

 

    img.onload = function () { // 图片下载完毕时异步调用 callback 函数。

        callback.call(img);// 将回调函数的 this 替换为 Image 对象

    };

};

 

/*function f(){

$('#imgdiv23').append(this);

$('#imgdiv2').append(this);

}*/

</script>

</head>

<body onload="loadImage('http://www.yunnany.cn/jingdiandaquan/UploadFiles_2558/200809/20080901110309997.jpg',function(){alert(' 加载图片完成! ' + this.width)})">

<div id="imgdiv23"></div>

fdsfsafadsf

<div></div>

</body>

</html> 
 

 

2.2. 预加载页面截图

2.2.1. 首次加载

只是加载图片,并不显示图片。

 

 

加载中

加载完成(显示图片的宽度)

2.3. 其它页面的代码

该页面加载一张图片,该图片与上面预加载的图片 url 一样。

<html>

<head>

</head>

<body>

<div><img src="http://www.yunnany.cn/jingdiandaquan/UploadFiles_2558/200809/20080901110309997.jpg"/></div>

</body>

</html> 
 

 

2.4. 其它页面截图

该图片会从浏览器缓存中直接读取,瞬间加载完成。

 

 

加载完成

3. XML 文件缓存

3.1. 说明

对于 xml 文件是否是从缓存读取的方法是通过 firefox httpfox 插件观察 http 请求 header 信息(服务器端响应状态码)来完成的。

3.2. 页面代码

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title> 无标题页 </title>

    <script src="jquery.js" type="text/javascript"></script>

    <script type="text/javascript">

        $(document).ready(function(){

               $.ajax({url:"http://www.testserver.com:8080/fckeditor/test.xml ",

                    success:function(xml){

                            $(xml).find("province").each(function(){

                                var t = $(this).attr("name");//this->

                                $("#DropProvince").append("<option>"+t+"</option>");

                           });

                     }

               });

            $("#DropProvince").change(function(){

                    $("#sCity>option").remove();

                    var pname = $("#DropProvince").val();

                    $.ajax({url:"City.xml",

                        success:function(xml){

                            $(xml).find("province[name='"+pname+"']>city").each(function(){

                                $("#sCity").append("<option>"+$(this).text()+"</option>");

                            });

                         }

                    });

            });

        });

    </script>

</head>

<body>

    <form id="form1">

    <div>

        <select id="DropProvince" style="width:60px;">

            <option> 请选择 </option>

        </select>

        <select id="sCity" style="width:60px;">

        </select>

    </div>

    </form>

</body>

</html> 
 

 

3.3. 截图

通过比较可以发现首次加载之后再次加载页面的时候, xml 文件是直接从浏览器缓存中获取的。

 

首次加载的时候状态码为 200 。( Result 列)

首次加载

再次加载的时候 Result 列为( Cache )。

再次加载

 

  • 大小: 11.8 KB
  • 大小: 9 KB
  • 大小: 197.4 KB
  • 大小: 45.1 KB
  • 大小: 38.7 KB
分享到:
评论

相关推荐

    浏览器缓存读取工具

    浏览器缓存是网络浏览的重要组成部分,它用于存储网页的静态资源,如图片、JavaScript文件、CSS样式表等,以便在用户再次访问同一页面时能够快速加载,提高网页的响应速度和用户体验。`ChromeCacheView`是一款实用的...

    infrared-remote-浏览器缓存demo

    解压并研究这些文件,我们可以更深入地了解如何结合浏览器缓存技术来优化一个实际的红外遥控应用。 总的来说,这个demo为学习和实践浏览器缓存提供了一个有趣的实例,帮助开发者理解如何通过缓存策略提升网页性能,...

    G_S模式下Android地理信息浏览器缓存技术研究.pdf

    在“G_S模式下Android地理信息浏览器缓存技术研究”这一主题中,我们主要探讨的是如何在Android平台上,尤其是在地理信息系统(GIS)应用中,优化数据加载和用户体验,通过有效的缓存策略实现高效的数据管理和访问。...

    海报:浏览器缓存中的人:通过浏览器缓存中毒持续进行HTTPS攻击

    综上所述,该研究论文详细介绍了浏览器缓存中毒攻击的原理、风险、攻击向量的分类,以及可能对用户造成的严重影响。它强调了提高网络安全意识和采取相应防护措施的重要性,以确保用户在网络浏览过程中的安全。

    浏览器缓存中的人:通过浏览器缓存中毒持续进行HTTPS攻击

    浏览器缓存中的人:通过浏览器缓存中毒持续进行HTTPS攻击

    Chrome浏览器缓存目录的小工具

    ChromeCacheView是一款专为查看和分析Chrome浏览器缓存设计的实用小工具,尤其对于开发者和网络优化人员来说,这款工具极具价值。 首先,我们要了解浏览器缓存的基本概念。浏览器缓存是为了减少网络传输,加快页面...

    中兴webkit浏览器研究报告

    **中兴WebKit浏览器研究报告概述** WebKit是一款开源的Web渲染引擎,被广泛应用于多个浏览器和操作系统,包括中兴公司的自研浏览器。此研究报告深入探讨了中兴WebKit浏览器在设计、性能优化、安全特性以及兼容性等...

    G/S模式下Android地理信息浏览器缓存技术研究 (2013年)

    为了研究G/S(geographic information browser/ distributed spatial data servers)模式客户端动态聚合服务,提出了一种在Android系统下基于G/S模式的地理信息浏览器缓存技术。利用移动终端硬件与软件技术的发展优势...

    videocacheview 提取缓存视频音频图片(支持Chrome)

    Videocacheview是一款强大的工具,专为用户从浏览器缓存中提取多媒体资源而设计,特别是针对Google Chrome浏览器。这款软件能够帮助用户轻松获取浏览器在浏览网页过程中自动下载的视频、音频和图片,对于需要保存...

    IE缓存提取工具

    浏览器缓存主要目的是提高页面加载速度和减少网络带宽的使用。当用户首次访问一个网页时,浏览器会将页面的资源文件下载并存储在本地,这些文件包括图片、音频、视频、CSS样式表和JavaScript脚本等。当用户再次访问...

    手机WAP浏览器的研究与设计

    2. 缓存策略:为了提高浏览速度,浏览器会采用缓存机制,存储最近访问过的页面数据,减少重复下载。 3. 错误处理:无线网络环境不稳定,WAP浏览器需具备良好的错误恢复能力,如断线重连、页面恢复等。 4. 安全性:...

    GeoServer瓦片缓存机制研究

    金字塔模型是指将矢量图层渲染为栅格数据,然后将其分割为小的瓦片,这些瓦片可以快速下载,并且文件名不会改变,以致浏览器能快速缓存起来。GeoServer 也可采用类似 Google Maps 同样的切割方法,切割完的图片按照 ...

    缓存文件万能提取器,可以闪电任意提取IE缓存中的文件至指定文件夹

    标题中的“缓存文件万能提取器”是一个专门用于处理Internet Explorer(IE)浏览器缓存的工具。在互联网浏览过程中,浏览器为了提高加载速度和用户体验,会将网页上的部分资源如图片、JavaScript、CSS文件等暂时存储...

    http缓存知识梳理

    使用浏览器缓存可以避免对服务器资源的重复加载,特别是对于大文件如图片、视频等资源,缓存的效果尤为明显。此外,合理的缓存策略可以提高网页加载速度,减少页面渲染时间,对性能优化至关重要。 为了充分利用...

    C#,IE缓存查看器(源码)

    综上所述,这款C#编写的IE缓存查看器是一个实用的工具,可以帮助用户更方便地管理他们的浏览器缓存,提供了一种可视化的方式来查看、复制和删除IE的临时文件。对于开发者而言,源码部分则提供了学习C#编程、文件系统...

    基于嵌入式Linux的IPTV机顶盒浏览器的研究与实现.pdf

    实验结果表明,该嵌入式浏览器支持多窗口打开页面链接、支持中文显示、图片渲染速度快,同时Webkit提供了历史页面的缓存、支持后退、前进以及历史显示等功能。 此外,本文还讨论了IPTV机顶盒浏览器的实现步骤,包括...

    chrome/Chromium缓存查看chromeCacheView

    总的来说,ChromeCacheView是Chrome和Chromium用户的重要辅助工具,它提供了深入洞察浏览器缓存的能力,对于网页开发、性能优化、安全研究以及普通用户的数据恢复都有重要意义。通过熟练掌握这款工具的使用,用户...

    易语言制作的9款浏览器源码

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语法,降低了编程的门槛,使得更多非计算机专业的人也能参与到...通过深入研究和实践,你可以提升自己的编程技能,甚至开发出具有独特功能的定制化浏览器。

    WebView控件的缓存以及不打开手机浏览器浏览下级页面

    在这个主题中,我们将深入探讨WebView的缓存机制以及如何避免在浏览下级页面时打开手机浏览器。 首先,我们来看一下WebView的缓存机制。为了提高网页加载速度并减少网络流量消耗,Android的WebView支持本地缓存。...

Global site tag (gtag.js) - Google Analytics