关于 Swiper 的坑——只有3.3.1的非压缩版正常,非常奇怪

前一段时间,为了遵守《高性能网站建设指南》的约定——压缩JavaScript,我把swiper的版本由swiper.jquery.js改成了swiper.jquery.min.js,结果奇怪的事情发生了——安卓版的微信加载网页超级慢,而非微信版的浏览器访问网站均正常,这个问题,我还特意在网络上搜了搜,还真有人遇到这样的问题。但解决办法没有。

这就奇了怪了,最初,我的怀疑对象肯定不是swiper,我怀疑是微信安卓版的签名问题。因为在使用 https://github.com/wechat-group/weixin-java-tools 进行签名的时候有这样一段代码:

  @Override
  public String getJsapiTicket(boolean forceRefresh) throws WxErrorException {
    Lock lock = this.getWxMpConfigStorage().getJsapiTicketLock();
    try {
      lock.lock();

      if (forceRefresh) {
        this.getWxMpConfigStorage().expireJsapiTicket();
      }

      if (this.getWxMpConfigStorage().isJsapiTicketExpired()) {
        String responseContent = execute(SimpleGetRequestExecutor.create(this), WxMpService.GET_JSAPI_TICKET_URL, null);
        JsonElement tmpJsonElement = JSON_PARSER.parse(responseContent);
        JsonObject tmpJsonObject = tmpJsonElement.getAsJsonObject();
        String jsapiTicket = tmpJsonObject.get("ticket").getAsString();
        int expiresInSeconds = tmpJsonObject.get("expires_in").getAsInt();
        this.getWxMpConfigStorage().updateJsapiTicket(jsapiTicket, expiresInSeconds);
      }
    } finally {
      lock.unlock();
    }
    return this.getWxMpConfigStorage().getJsapiTicket();
  }

怀疑这段代码的原因就是它有一个lock,但时候证明原因不在于此。这个方法请求得响应结果特别的快。

后来,折腾了一天,实在是没招了,就只能回滚项目源码的版本,一次次试错,最后在临近晚上7点的时候才把问题确定在swiper上。

当时页面引用的swiper是这样的:

<script src="https://cdn.bootcss.com/Swiper/3.3.1/js/swiper.jquery.min.js"></script>

最初代码部署在阿里云的服务器上时,我手机是iPhone6,微信订阅号访问的时候速度特别正常。但是老板的手机是华为的安卓,微信访问慢得要人崩溃,这期间我一直认为不是代码的问题,而是他手机的问题,最后老板被客户逼急了,还刷了机(悲催的是数据还丢了),结果访问速度依然很慢。后来,他就来逼我,这™没有一点错误信息啊,我手机正常啊,非微信的安卓浏览器也访问正常啊。代码绝对是没有问题的。

后来没办法,别人的安卓手机微信访问网站也是慢,问题总要解决啊。

我必须要在本地重现这个问题了,使用微信提供的微信web开发者工具没有问题,Google Chrome浏览器没有问题。

然后开启ngrok,奇怪的现象发生了,我的手机iPhone6:

这里写图片描述

微信浏览器的进度条一直停留在大概这个位置!

现在我确信代码是在某个地方出现了bug!,确定无疑了!

回滚历史版本是必须的,这是一项重复性特别高的工作,一行一行代码的瞧啊,就像是在拾麦子一样。最后,问题终于找到是在swiper的应用上面!!!!!!!!!

把压缩版换成开发版:

<script src="https://cdn.bootcss.com/Swiper/3.3.1/js/swiper.jquery.js"></script>

这个时候,访问竟然正常了!!!!!!!!!!!!!!神奇的swiper!!!!!!!!!!!!

把swiper切换成3.4.2的开发版还是压缩版,都依然有问题。

<script src="https://cdn.bootcss.com/Swiper/3.4.2/js/swiper.jquery.js"></script>

是不是使用swiper的时候出错了呢?
这问题我也考虑过,试验过。

new Swiper('.recom-container', {
    pagination : '.recom-pagination',
    lazyLoading : true,
    slidesPerView : 1,
    paginationClickable : true,
});
// 热点新闻
new Swiper('.index-new-list', {
    autoplay : 3000,
    direction : 'vertical',
    loop : true,
    paginationClickable : true
});

// 导航
new Swiper('.index-nav', {
    scrollbarHide : true,
    slidesPerView : 'auto',
    centeredSlides : false,
    grabCursor : true
});

使用方法应该是没有问题的,应该就是swiper版本的问题,当然这问题的发生也特别的奇怪,它阻碍页面的呈现。并且看浏览器的脸色。

问题的结果,也只能是说swiper在版本更新的时候忽略了某些浏览器的兼容,导致内部的某些地方阻塞。

解决的方案,其实也很简单,只能将就使用3.3.1的开发版。也就是

<script src="https://cdn.bootcss.com/Swiper/3.3.1/js/swiper.jquery.js"></script>

如果你遇到和我类似的问题,还希望和你进行沟通!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默王二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值