Comments (14)
是,通过设置 HTML 页面的 header,的确可以将 HTML 页面也设置为强缓存。然而,要考虑下面 2 个问题。
- 假如 HTML 要更新呢?你怎么办?你总不能像 js 文件那样换 MD5 戳吧,因为页面的 URL 只有一个。
- 即便你把 HTML 做成强缓存,当你断开网络时,你会发现你访问到的是一个“无网络”的页面。为什么呢?因为当网络断开时,浏览器默认是会显示“无网络”页面的,除非你这个页面进行了“可离线访问”的特殊操作,比如应用缓存需要在 html 标签中生命 manifest 属性,比如 service-worker 中需要监听 fetch 事件。
@zhaozhiwen2014
from blog.
这几个技术结合起来就是 PWA 了
from blog.
的确如此。 @riskers
from blog.
@youngwind 最近一年一直在关注 PWA
from blog.
这种浏览器缓存(我称之为 Header 缓存)有两个共同的缺点:
“当没有网络的时候,应用无法访问,因为 HTML 页面总得去服务器获取。” 这句怎么理解,通过header设置,页面不是可以缓存下来吗
from blog.
@youngwind 谢谢 你文中 说的“最近在翻红宝书” 红宝书 是哪本书 求推荐
from blog.
@zhaozhiwen2014 javascript 高级程序设计
from blog.
结合CacheStorage+Service Worker+diff算法应该可以实现更好的前端静态资源增量更新。
from blog.
你说的我倒是第一次听说,我在网上找了些资料:用增量更新算法为 web 应用节省流量,相关 PPT,这是你说的意思吗?当然,文中用的是 localStorage,你说的是 CacheStorage+Service Worker,不过关键的 diff 算法应该是一致的。
这种方案,有点类似于 Webpack 的热更新,不过 Webpack 的热更新只在开发环境用,不需要考虑实际环境的 Hash 等问题。
@vevlins
from blog.
对的。我是在思考静态资源到底是合并还是拆分想到了增量更新这个想法,我也看到了腾讯的这个开源项目,另外据说也有一些cdn做了这样的事情,但是这样需要对cdn整体做改动,不掌握在项目方自己手里。
另外这种直接弃用http缓存的方案我认为可能会造成一些隐性的问题,我对CacheStorage的了解不多,应该是相当于提供了js操作http缓存的能力吧。而且结合Service Worker还可以做一些资源有效性的批量查询等。
相对于localstorage的方案,这样似乎改动更小,对原有的缓存机制也没有做太大的颠覆,想要接入或者降级应该也会更稳妥一点。
from blog.
shaofeng 👍 这关注量
from blog.
有个问题请教一下,浏览器本身是有http的cache control缓存的,如果这个缓存没有过期,当页面发起一个请求时,是先经过fetch拦截还是浏览器本身的http缓存?
from blog.
浏览器的缓存机制这篇文章的链接似乎已经过时,我找到了有效的链接:https://git-lt.github.io/2016/11/21/web-cache/
from blog.
Good
from blog.
Related Issues (20)
- webpack源码学习系列之三:loader 机制 HOT 8
- V8引擎探索:如何注入全局变量 HOT 3
- preact 源码学习系列之一:JSX解析与DOM渲染 HOT 18
- preact 源码学习系列之二:组件的渲染与更新 HOT 1
- 膜拜 HOT 1
- 最小编辑距离问题:递归与动态规划 HOT 13
- React 事件代理与 stopImmediatePropagation HOT 20
- 图解 HTTPS:Charles 捕获 HTTPS 的原理 HOT 21
- 单页面应用路由实现原理:以 React-Router 为例 HOT 8
- 这个坑占了一年多了,什么时候填上呢? HOT 6
- 安卓微信返回上一页怎么阻止刷新? HOT 1
- Vue SSR Demo HOT 14
- 前端之问,程序员之问,职业之问 HOT 21
- JSON.parse 三种实现方式 HOT 4
- 腾讯社招内推(已失效) HOT 7
- 腾讯 AlloyTeam 前端团队 2019 校园招聘提前批正式开始
- 暑期实习招聘 Web 前端开始啦,面向 2020 毕业
- First Meaningful Paint 首次有效绘制时间 HOT 1
- 也许这就是答案
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blog.