主题
  • 默认模式
  • 浅蓝色模式
  • 淡红色模式
  • 深夜模式

什么是应用程序缓存?

应用程序缓存(Application Cache)是HTML5提供的一种机制,允许Web应用在用户离线时仍可访问。

应用程序缓存(又称AppCache)为 Web 应用带来三大优势:

  • 离线浏览 - 用户可在无网络连接时使用应用
  • 提升速度 - 已缓存资源加载的更快
  • 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源

浏览器支持

表格中的数字指示了完全支持应用程序缓存的首个浏览器版本。

浏览器 Chrome 浏览器 IE 浏览器 Firefox 浏览器 Safari 浏览器 Opera 浏览器
支持 Application Cache 的初始版本 4.0 10.0 3.5 4.0 11.5

使用方法

1. 创建缓存清单文件

首先需要创建一个缓存清单文件(通常以.appcache为后缀),例如example.appcache:

CACHE MANIFEST
# v1 2025-01-01
# 这是注释,修改注释可触发缓存更新

CACHE:
# 需要缓存的资源列表
/style.css
/logo.png
/main.js

NETWORK:
# 需要在线访问的资源
/api/

FALLBACK:
# 离线时的备用页面
/offline.html

2. 关联清单文件

在HTML文件中关联清单文件:

<html manifest="example.appcache">
...
</html>

3. 清单文件详解

缓存清单文件包含三个主要部分:

  • CACHE部分:列出需要缓存的资源文件(首次下载后将被缓存)
  • NETWORK部分:列出必须通过网络访问的资源(不会被缓存)
  • FALLBACK部分:指定当资源无法访问时的备用页面

更新缓存

缓存会在以下情况下更新:

  • 用户清空浏览器缓存
  • 清单文件被修改(即使注释改变也会触发更新)
  • 程序调用window.applicationCache.update()

JavaScript API

可以通过JavaScript控制缓存:

var appCache = window.applicationCache;

appCache.update(); // 尝试更新缓存

appCache.addEventListener('updateready', function(e) {
    if (appCache.status == appCache.UPDATEREADY) {
        appCache.swapCache();  // 交换到新缓存
        if (confirm('新版本可用,是否重新加载?')) {
            window.location.reload();
        }
    }
}, false);

缓存状态

可通过appCache.status获取当前缓存状态:

  • UNCACHED(0):未缓存
  • IDLE(1):空闲(缓存是最新的)
  • CHECKING(2):正在检查更新
  • DOWNLOADING(3):正在下载更新
  • UPDATEREADY(4):更新就绪
  • OBSOLETE(5):缓存已过期

关于应用程序缓存的注意事项

  • 清单文件必须使用正确的 MIME 类型(text/cache-manifest)
  • 清单文件列出的所有资源必须同源
  • 每个需要缓存的应用页面都必须包含 manifest 属性
  • 缓存有大小限制(通常 5MB)
  • 现代 Web 开发中,Service Worker 正逐渐取代 AppCache



评论区 0
发表评论