热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

页面相关的数据存储(缓存及WebStorage)

页面可用的缓存包括:HttpCache,LocalStorage,SessionStorage以及ApplicationCache.它们都可以用来减少请求数量,以提高页面的性能及减

页面可用的缓存包括:Http Cache, Local Storage, Session Storage以及Application Cache. 它们都可以用来减少请求数量,以提高页面的性能及减少流量消耗,这对于移动端的浏览器来说更为重要 (另外还有Memory Cache, 不过对于前端工程而言是透明的)。

bubuko.com,布布扣

Http Cache

最为常用的缓存机制。相对后三项属于浏览器内核内的模块(也是H5中定义的标准),Http Cache早已存在于HTTP模块中了。它是网络层对HTTP协议实现中一部分。它基于对响应头中的Cache Conrol信息进行解析,执行新鲜度检查、条件更新等操作来管理缓存。缓存的容量限制及淘汰、更新算法在各个浏览器中实现都不相同,属于浏览器及页面开发优化的一个重点。比如缓存赵多的内容会使得网页请求的数量更少,但是缓存的内容达到一定量后,会导致查询及I/O变慢,反而使得投入产出比下降。容量是基于存储空间而定,不同的浏览器会有不同的最大值,而且不同的用户在实际使用是对缓存总量的依赖也不同。这些都是浏览器性能优化时考虑的内容。


详细内容可以通过<<管好页面缓存>>了解。


它的一个问题在于缓存内容的淘汰基于算法的实现,无法保证单独针对需要保留某个资源。所有的资源都可能因为缓存策略的变化,存储空间的变化而遭到淘汰。所以针对这种场景,HTML5定义了能更好地支持离线浏览的Applcation Cache。



Application Cache 

 应用于离线场景下可以让用户继续使用页面的场景,比如支持离线的游戏、及Office编辑应用等。 没有明确的容量限制,WebKit系列的浏览器会有每个域名5MBytes的限制(默认而已,具体会有变化)。考虑到一些浏览器存储时使用UTF-16编码,并不能真正达5MBytes。


Application Cache是一种基于请求的主动缓存,缓存的内容受Cache Control信息控制,包括相关的新鲜度检测等。


实际应用时, Application Cache比较容易出问题, 典型的有,如何更改manifest文件以达到资源更新的目的,以及可能会造成重复缓存(manifest解析的时机不同)。 在决定使用Application Cache,一定要好好读读这篇文章:<<Application
Cache is a Douchebag
>>。


Application Cache提供的API非常简单,它并不依赖于JS就可以实现缓存的目的,同是又可以通过API来获得缓存的状态。详细内容参考H5规范中的定义<<Offline
Web Applications
>>。



Local Storage & Session Storage

使用方式和COOKIE相&#20284;,主要应对COOKIE不适合存储较大数据的情况,否则会导致与服务器交互的数据变大,性能易受到影响。。相对于Applcation Cache, 它们的使用依赖于JS, 但是简单明确。


Local Storage及Session Storage在H5称为Web Storage,
使用相同的API, 只是两者存在周期不同。前者可以一直存储,没有时间限制。后者则只存在于一个会话期,用户关闭浏览器后就会清除(除非浏览器支持重启后恢复上次的会话)。


在存储的API中,有不同的调用方式, 其性能是有差异的,并且不同的浏览器表现迥异:

bubuko.com,布布扣

bubuko.com,布布扣


可能的原因是相对大家都关注的JS Engine执行性能问题的逐步改善,DOM的操作时间对性能的影响更大。下面的数据来自IE团队针对使用较多AJAX请求的页面的统计:

bubuko.com,布布扣


Web Storage的最大问题在于存储的同步问题,好在有一些JS库可以帮助改善这个问题。详细的内容可以阅读<>第6章Optimizing with Web Storage.


转载请注明出处: http://blog.csdn.net/horkychen


  


推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本指南详细介绍了如何利用华为云对象存储服务构建视频点播(VoD)平台。通过结合开源技术如Ceph、WordPress、PHP和Nginx,用户可以高效地实现数据存储、内容管理和网站搭建。主要内容涵盖华为云对象存储系统的配置步骤、性能优化及安全设置,为开发者提供全面的技术支持。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • 本文详细探讨了OpenCV中人脸检测算法的实现原理与代码结构。通过分析核心函数和关键步骤,揭示了OpenCV如何高效地进行人脸检测。文章不仅提供了代码示例,还深入解释了算法背后的数学模型和优化技巧,为开发者提供了全面的理解和实用的参考。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 基于 Vue 和 Element UI 实现的简洁登录界面设计
    本文介绍了一种利用 Vue.js 和 Element UI 框架构建的简洁登录界面设计。该设计不仅注重用户体验,还确保了界面的美观性和易用性。通过合理的布局和组件配置,实现了高效、响应式的登录功能,适用于多种前端应用场景。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 在嵌入式Linux系统中,性能低下通常由CPU、内存和I/O三个关键因素引起。为了有效提升系统性能,首先需要识别并定位性能瓶颈。通过综合分析这些瓶颈,可以采取针对性的优化措施,如调整内核参数、优化算法和改进数据结构等,从而显著提高系统的整体性能。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
author-avatar
kyf召世星bdc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有