你使用什么样的缓存策略?我阅读了离线手册,最简单的策略是缓存静态内容,并省略API调用。服务人员:如何更新服务器上的文件更改缓存?

这一战略似乎是这样的:

检查请求是否已在缓存中

如果不加要求,响应对缓存

返回响应

如果在服务器端文件已更改,如何更新缓存?目前客户端总是获得缓存的结果。

这里是我的缓存策略代码:

// You will need this polyfill, at least on Chrome 41 and older.

importScripts("serviceworker-cache-polyfill.js");

var VERSION = 1;

var CACHES = {

common: "common-cache" + VERSION

};

// an array of file locations we want to cache

var filesToCache = [

"font-cache.html",

"script.js",

];

var neededFiles = [

"index.html"

];

var errorResponse = function() {

return new Response([

"

Failed to get file

",

"

Could not retrive response from cache

"

].join("\n"),

500

);

};

var networkFetch = function(request) {

return fetch(request).then(function(response) {

caches.open(CACHES["common"]).then(function(cache) {

return cache.put(request, response);

});

}).catch(function() {

console.error("Network fetch failed");

return errorResponse();

});

}

this.addEventListener("install", function(evt) {

evt.waitUntil(

caches.open(CACHES["common"]).then(function(cache) {

// Cache before

cache.addAll(filesToCache);

return cache.addAll(neededFiles);

})

);

});

this.addEventListener("activate", function(event) {

var expectedCacheNames = Object.keys(CACHES).map(function(key) {

return CACHES[key];

});

console.log("Activate the worker");

// Active worker won"t be treated as activated until promise resolves successfully.

event.waitUntil(

caches.keys().then(function(cacheNames) {

return Promise.all(

cacheNames.map(function(cacheName) {

if (expectedCacheNames.indexOf() ===

-1) {

console.log(

"Deleting out of date cache:",

cacheName);

return caches.delete(cacheName);

}

})

);

})

);

});

self.addEventListener("fetch", function(event) {

console.log("Handling fetch event for", event.request.url);

event.respondWith(

// Opens Cache objects

caches.open(CACHES["common"]).then(function(cache) {

return cache.match(event.request).then(function(

response) {

if (response) {

console.log("Found response in cache", response);

return response;

} else {

return networkFetch(event.request);

}

}).catch(function(error) {

// Handles exceptions that arise from match() or fetch().

console.error(

" Error in fetch handler:",

error);

return errorResponse();

});

})

);

});

+0

服务器发送的事件是什么意思?当页面或资源得到更新时发送事件并更新缓存? –

服务器改文件,服务人员:如何更新服务器上的文件更改缓存?相关推荐

  1. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件

    FastDFS 服务端安装参考文章:分布式文件系统之 FastDFS 安装 FastDFS Java 客户端 先从 GitHub 上将项目源码克隆下来: $ git clone https://git ...

  2. vue+elementui 同时有上传文件和批量上传文件功能,上传文件或批量上传文件后必须刷新才能再次上传文件

    报错描述: 使用element-ui的上传文件组件写一个批量上传和上传文件,但是发现每次上传文件后或者批量上传文件后,不能再次上传文件或者批量上传文件.只有进入页面第一次点击上传文件或者批量上传文件才 ...

  3. 文件服务器之:NFS服务器

    1.NFS搭建 1.1.server端软件安装(192.168.241.100): [root@localhost ~]# yum install -y nfs-utils.x86_64 rpcbin ...

  4. putty ubuntu服务器 上传文件,教你如何使用PuTTY上传文件?

    PuTTY是Windows和Unix平台的免费telnet和ssh客户端.该程序主要面向网络管理员和开发人员.该程序是高度可配置的,包括许多选项来调整连接.最初由SimonTatham为Windows ...

  5. java怎么上传文件到web服务器_Java客户端通过Http发送POST请求上传文件到web服务器...

    http://www.cnblogs.com/WilliamJiang/archive/2012/04/29/2475883.html 1.朋友的一个需求,让我给他实现,需求是这样的,需要用ASP.n ...

  6. nas服务器改成网站,nas配置web服务器

    nas配置web服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 云耀云服 ...

  7. wsbm服务器错误怎么修复,如何使用ab测试上传文件

    1. 简单了解ab测试 ab是Apache超文本传输协议(HTTP)的性能测试工具.可以使用工具对网络接口进行压力测试,以判断网络接口的性能. 一般对网络接口进行压力测试,需要关注几个重要的指标,吞吐 ...

  8. 坦克世界服务器维护,坦克世界连接到更新服务器失败,手把手教你怎么解决坦克世界连接到更新服务器失败...

    玩过坦克世界的用户就知道,它具有历史迷你战役.对战模式与全球地图的史诗战争模式等,玩家可选择中坦.重坦.轻坦.火炮和坦克歼击车五种战车.不过也有玩家在坦克世界连接到更新服务器出现了失败,怎么办?下面, ...

  9. es+ftp服务器传文件怎么那么慢,es本地上传文件ftp服务器

    es本地上传文件ftp服务器 内容精选 换一换 上传的文件和上传的文件夹中包含的文件支持的格式请参见支持的文件格式.文件上传:从本地上传:在Projects Explorer视图中选中一个文件夹,依次 ...

  10. 最终幻想15显示服务器,最终幻想15无法连接到更新服务器啊 | 手游网游页游攻略大全...

    发布时间:2016-06-25 街头霸王5无法连接到更新服务器?链接服务器错误解决办法,街头霸王5现在已经正式上市了,很多玩家在今天的游戏中发现无法连接到更新服务器,这是怎么回事呢,下面小编就为大家带 ...

最新文章

  1. 解决Python模块报错:ModuleNotFoundError: No module name 'StringIO'
  2. Linux的文件系统及其硬盘分区挂载原理
  3. Navicat连接sqlserver提示:未发现数据源名并且未指定默认驱动程序
  4. Javascript代码优化的8个知识点
  5. 【机器学习基础】数学推导+纯Python实现机器学习算法19:PCA降维
  6. countByValue
  7. Blazor系列终结!
  8. python 16进制补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制
  9. 如何从使用环境上区别光纤收发器?
  10. 【HihoCoder - 1269】 优化延迟 (优先队列+二分优化)
  11. mysql用户权限与安全实例_mysql用户权限管理实例分析
  12. C语言和设计模式(适配器模式)
  13. java多线程——CAS
  14. FreeCAD 扫掠空间曲线
  15. (转)文通慧视的用法
  16. DirectX示例翻译和解析StateManager Sample
  17. js获取字符串字符数和字节数,注意:区分字符串字符数和字节数(编程环境UTF-8的情形)
  18. Big Faceless Java Pdf报表生成器控件介绍
  19. 2021年「博客之星」参赛博主:dnbug Blog
  20. 第三十三天- 线程创建、join、守护线程、死锁

热门文章

  1. 循环删除list中多个元素
  2. Luogu1856 [USACO5.5]矩形周长Picture(矩形周长并)
  3. 小程序学习笔记(5)-目录结构介绍
  4. whoami 显示“我是谁”
  5. mysql zf_ZF 连接 Mysql
  6. 均线策略python代码_Python版商品期货多品种均线策略
  7. 黑苹果内置硬盘识别成外置硬盘_压倒U盘最后一根稻草?ORICO iMatch移动固态硬盘体验...
  8. easyui 隐藏input_Easyui-Datebox设置隐藏或者不可用如何解决
  9. NIO的基本概念和缓冲区
  10. java桌面项目打包_by icewee_写得太棒了,直接转载了