Wordpress页面滞后

时间:2017-08-09 02:16:30

标签: javascript wordpress lag

我目前正在为客户修复wordpress网站,遗憾的是我在其中一个网页上滚动时遇到了很多问题。我已经一次又一次地尝试删除任何可能导致它的滚动辅助js但我仍然无法让它工作。

以下是给我带来麻烦的网页网址:http://www.bombaygrilloh.com/home/menu/

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

您的问题是background-attachment

Chris Ruppel写道:

  

[...]使用background-attachment:fixed会在每次用户滚动时导致绘制操作。为什么?好吧,页面必须重新定位内容,然后,由于它的背景图像看起来好像它保持静止,浏览器必须在相对于其实际DOM元素的新位置重新绘制该图像。此功能的性能非常糟糕,iOS只是忽略了这个属性。

罪魁祸首是你的标题background图片。

fixed 并且一直在页面内容后滚动重新粉刷。

在你的CSS文件中你有这个

.section-parallax {
    background-attachment: fixed;
}

如果删除它,那么您可以毫无困难地平滑滚动但是您会失去视差效果。

如果你必须具有视差效果,那么你需要使用更有效的方法来实现效果或者破解你的方式。

为了提高效率,请使用jQuery。我找到了pen by Marcel Schulz并将其复制到下面以供参考:



/* 
See https://codepen.io/MarcelSchulz/full/lCvwq

The effect doens't appear as nice when viewing in split view :-)

Fully working version can also be found at (http://schulzmarcel.de/x/drafts/parallax).

*/

jQuery(document).ready(function() {
  $(window).scroll(function(e) {
    parallaxScroll();
  });

  function parallaxScroll() {
    var scrolled = $(window).scrollTop();
    $('#parallax-bg-1').css('top', (0 - (scrolled * .25)) + 'px');
    $('#parallax-bg-2').css('top', (0 - (scrolled * .4)) + 'px');
    $('#parallax-bg-3').css('top', (0 - (scrolled * .75)) + 'px');
  }

});

body {
  background: rgba(230, 231, 232, 1);
  height: 4600px;
}


/* foreground (balloons/landscape)*/

div#parallax-bg-1 {
  position: fixed;
  width: 1200px;
  top: 0;
  left: 50%;
  margin-left: -600px;
  z-index: 1;
}


/* background middle layer*/

div#parallax-bg-2 {
  position: fixed;
  width: 1200px;
  top: 0;
  left: 50%;
  margin-left: -600px;
  z-index: 2;
}


/* background layer */

div#parallax-bg-3 {
  position: fixed;
  width: 960px;
  top: 0;
  left: 50%;
  margin-left: -470px;
  z-index: 3;
}


/* foreground */

div#parallax-bg-3 div {
  background-repeat: no-repeat;
  position: absolute;
  display: block;
  overflow: hidden;
}

div#bg-3-1 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/balloon.png');
  width: 529px;
  height: 757px;
  top: -100px;
  right: 100px;
}

div#bg-3-2 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/balloon2.png');
  width: 603px;
  height: 583px;
  top: 1050px;
  right: 70px;
}

div#bg-3-3 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/balloon3.png');
  width: 446px;
  height: 713px;
  top: 1800px;
  right: 140px;
}

div#bg-3-4 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/ground.png');
  width: 1104px;
  height: 684px;
  top: 2800px;
  right: 0px;
}


/* middle layer clouds */

div#parallax-bg-2 div {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/cloud-lg1.png');
  background-repeat: no-repeat;
  position: absolute;
  display: block;
  width: 488px;
  height: 138px;
  overflow: hidden;
}

div#bg-2-1 {
  top: 100px;
  left: -310px;
}

div#bg-2-2 {
  top: 270px;
  right: -70px;
}

div#bg-2-3 {
  top: 870px;
  left: -300px;
}

div#bg-2-4 {
  top: 1120px;
  right: -130px;
}

div#bg-2-5 {
  top: 1620px;
  left: 140px;
}

div#bg-2-6 {
  top: 720px;
  left: 340px;
}


/*background layer clouds */

div#parallax-bg-1 div {
  background-repeat: no-repeat;
  position: absolute;
  display: block;
  width: 488px;
  height: 138px;
  overflow: hidden;
}

div#bg-1-1 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/cloud-sm1.png');
  top: 200px;
  right: 450px;
}

div#bg-1-2 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/cloud-lg2.png');
  top: 420px;
  left: 0px;
}

div#bg-1-3 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/cloud-sm1.png');
  top: 850px;
  right: -290px;
}

div#bg-1-4 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/cloud-sm1.png');
  top: 1350px;
  left: 200px;
}

div#bg-1-5 {
  background: url('http://schulzmarcel.de/x/drafts/parallax/img/cloud-lg2.png');
  top: 1200px;
  left: -200px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<head>
</head>

<body>
  <div id="parallax-bg-3" class="parallax-bg">
    <div id="bg-3-1"></div>
    <div id="bg-3-2"></div>
    <div id="bg-3-3"></div>
    <div id="bg-3-4"></div>
  </div>
  <div id="parallax-bg-2" class="parallax-bg">
    <div id="bg-2-1"></div>
    <div id="bg-2-2"></div>
    <div id="bg-2-3"></div>
    <div id="bg-2-4"></div>
    <div id="bg-2-5"></div>
    <div id="bg-2-6"></div>
  </div>
  <div id="parallax-bg-1" class="parallax-bg">
    <div id="bg-1-1"></div>
    <div id="bg-1-2"></div>
    <div id="bg-1-3"></div>
    <div id="bg-1-4"></div>
    <div id="bg-1-5"></div>
  </div>

</body>

</html>
&#13;
&#13;
&#13;

在上面引用的same article中,有一个如何解决CSS问题的教程。您没有使用background-attachment: fixed,而是将background添加到pseudo-element,并将其postion修改为

.element {
    position: relative;
}
.elemnt:before {
    content: ' ';
    position: fixed; /* instead of background-attachment */
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    background-color: white;
    background: url('/img/front/strategy.jpg') no-repeat center center;
    background-size: cover;
    will-change: transform; /* creates a new paint layer */
    z-index: -1;
}

这将基本上限制对滚动的影响作为&#34;背景&#34;会拥有它自己的独立元素。

注意:如果遇到无法调试的问题,请打开开发工具并逐个开始删除页面中的元素,直到找到问题为止。

<强>资源:

  1. https://www.w3.org/TR/css-will-change-1/
  2. http://caniuse.com/#feat=will-change
  3. https://www.youtube.com/watch?v=QU1JAW5LRKU
  4. https://developers.google.com/web/tools/chrome-devtools/

答案 1 :(得分:0)

通过查看您的网站,其中有一些部分会减慢其余部分的速度。以下是一些加快速度的简单方法。

  1. 使用CDN
  2. CDN(内容分发网络)可确保更快地加载所有内容,因为它不依赖于您自己的Wordpress服务器,并且允许访问时间在全球范围内保持一致。有一些好的,如CloudFlare和Incapsula。 Here是一篇列出更多内容的文章。

    此外,您可以稍微快速地托管您的图片(我看到一张图片来自维基百科)

    1. 压缩图片
    2. 此步骤就像将照片转换为.jpg一样简单。 JPEG通过删除照片中不必要的信息自动压缩数据。您还可以使用压缩软件来缩小文件大小。

      1. 利用缓存
      2. 使用a caching plugin(有很多很棒的Wordpress)来缓存服务器上的数据,并且可以真正加快网站的速度。

        1. 搜索更多优化方法
        2. 使用PingdomGoogle PageSpeed Insights等工具来识别瓶颈并解决问题。

          希望这能帮到你!