用 Vue 做 PWA(二):Runtime Caching

View Post on Blog

在此讨论实践过程中遇到的 Runtime Caching 的一些问题。主要注意点是在处理跨域请求上。


Runtime Caching 是指除了网页的 js 和 css 资源之类的以外,对运行时请求的资源进行缓存。接下来讨论如下配置:

runtimeCaching: [
  {
    urlPattern: /.*/,
    handler: 'StaleWhileRevalidate',
    options: {
      cacheName: 'Example',
      expiration: {
        maxAgeSeconds: 86400 * 15
      },
      cacheableResponse: {
        statuses: [0, 200]
      }
    }
  }
]

urlPattern

需要缓存的请求 URL,可以是一个字符串、正则表达式,甚至一个回调函数。对于跨域请求,必须从头到尾匹配正则表达式。如果喜欢暴力,那么就可以使用/.*/来缓存所有请求。

不透明响应 (Opaque Response)

Reference https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests

如果跨域请求不是 CORS,或者发起的姿势不对(比如没有使用 crossorigin="anonymous" )导致原本支持 CORS 的变成了 no-cors,那么你就会得到 Opaque Response。对于 Opaque Response,你不能以任何方式得到返回的信息,甚至连返回代码都不知道,永远是 0。只能将其作为图片资源等,而且是默认不缓存的。所以需要使用

cacheableResponse: {
  statuses: [0, 200]
}

来强行缓存 Opaque Response。注意如果请求发生错误,也会被缓存!请谨慎选择缓存策略,比如首次出错的 cacheFirst 将导致以后一直拿不到正确结果。

Opaque Response 的大小也是不能读取的,所以 Chrome 会虚报大小,比如几 K 的图片会占用几 M 的空间!于是你会更快地达到空间限制。显然 Chrome 不会傻到真的占用了那么多磁盘空间。

handler 缓存策略

expiration

有的时候缓存会变动,有点资源变动后以后都用不着了,得清除出去,所以可以设置过期时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当在Vue项目中出现未捕获的运行时错误时,可以通过设置Vue的全局错误处理来处理这些错误。在Vue的全局errorHandler中,可以对错误进行处理并输出错误信息。例如,可以使用console.log输出错误信息,并使用message.error显示错误提示。\[1\]这样可以避免在代码中到处写catch语句块来处理错误。另外,Vue项目中的错误主要来源于后端接口错误和Vue代码中的逻辑错误。对于后端接口错误,可以在axios中进行统一处理。对于Vue代码中的逻辑错误,可以使用Vue的全局错误处理来处理。\[2\]在使用vue-cli新建的Vue项目中,当出现编译错误或警告时,可以在浏览器中显示全屏覆盖。可以通过在vue.config.js中添加配置来解决这个问题,设置devServer的client.overlay为false即可。\[3\] #### 引用[.reference_title] - *1* *2* [Vue项目统一错误处理](https://blog.csdn.net/qq_38937669/article/details/112007111)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue项目中Uncaught runtime errors:怎样关闭](https://blog.csdn.net/qq_36877078/article/details/131175355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值