safari 尾部 script 阻塞页面渲染的问题

2019-08-09 17:24:28 +08:00
 beilo

最近做了个手机项目,为了优化交互在首屏有个 load 的动画.在其他设备上都是正常的,唯有 ios 上白屏,等到所有的 script 加载完成才会渲染.在 google 上没有查询到有用的结果.不知道有没有 v 友能提供一些帮助.

<!DOCTYPE html>
<html lang="en">
  <head>
   ...省略
    <style type="text/css">
      .index-load {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
      }
      .index-load img {
        width: 80px;
        height: 80px;
        margin: 0px auto;
      }
    </style>

    <!-- UI 组件库 1.0 -->
    <script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
    <link rel="stylesheet" href="./swiper.min.css" />
    <script src="./swiper.min.js"></script>

  </head>
  <body>
    <div id="root">
      <div class="index-load">
        <h4>loading...</h4>
      </div>
    </div>
  <script type="text/javascript" src="manifest.bundle.e49239d9939be1e9d187.js" async></script>
  <script type="text/javascript" src="vendors.21fb76d947bb4b3052a5.js" async></script>
  <script type="text/javascript" src="index.b5c33feb2f5cb956513d.js" async></script>
</body>
</html>

如上代码,vendors.js加载完成才会进行渲染,而尾部script都已经加了async关键字,但是毫无作用. 相关提问,非本人

谢谢.

1283 次点击
所在节点    问与答
4 条回复
love
2019-08-09 19:59:41 +08:00
加一个 defer 试一试?
beilo
2019-08-12 11:17:04 +08:00
@love 也不行呢.也是会加载完毕再进行渲染.
love
2019-08-12 11:30:27 +08:00
@beilo 你这个不是还有几个 script 放在 head?
beilo
2019-08-12 14:01:20 +08:00
@love 是的,但是那几个很快,而且必须要放在前面的.head 上的加载时间可以忽略不计.主要是 vendors.js 占用时间,导致白屏.虽说我已经分包处理过,在线上首屏首次加载在 1s 之内,但是 ios 那段白屏时间还是有的.想看看能不能优化的更好点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590538

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX