【问题标题】:HTML momentarily pauses loading to process PHP, the result is uglyHTML 暂时暂停加载以处理 PHP,结果很难看
【发布时间】:2015-03-30 12:18:26
【问题描述】:

不确定我是否真的需要我的示例代码,因为这是一个非常简单的场景。我有一个 php 文件:

<html>

    <?php

     *Some code hat pulls data from a database. This involves queries, for loops, etc.

    ?>

</html>

这个问题只发生在谷歌浏览器上:页面开始加载,处理 PHP,然后关闭标签。这会导致难看的向下滑动效果,下一个页面看起来像是在加载上一个页面。

这就是它在 Chrome 中的样子,我知道我正在以一种非常非正统的方式做某事。我真的不知道php的约定,但我学得很快。

我应该做些什么不同的事情?我不喜欢在 php 代码之前关闭标签,因为那样事情就会不合适,而 php 之后的所有内容当然不会包含在 html 标签中。

编辑:忘记提及它在您登录后重定向期间发生!

编辑:

   <?php 

    require 'autoload.php';



use Parse\ParseClient;
use Parse\ParseObject;
use Parse\ParseQuery;
use Parse\ParseACL;
use Parse\ParsePush;
use Parse\ParseUser;
use Parse\ParseInstallation;
use Parse\ParseException;
use Parse\ParseAnalytics;
use Parse\ParseFile;
use Parse\ParseCloud;
use Parse\ParseRelation;
use Parse\ParseSessionStorage;

session_start();
ParseClient::initialize( $app_id, $rest_key, $master_key );

$currentUser = ParseUser::getCurrentUser();

if ($currentUser) {

} else {

header("Location: http://rev-u.co/login");
exit();

}

?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
  <link rel="stylesheet" href="css/bootstrap.css">
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  <link href='http://fonts.googleapis.com/css?family=Noticia+Text' rel='stylesheet' type='text/css'>

  <script src="//www.parsecdn.com/js/parse-1.3.2.min.js">
  </script>
  <link rel="stylesheet" href="/css/normalize.css">
  <link rel="stylesheet" href="/css/style.css">
  <link rel="stylesheet" href="/css/home.css">
  <link rel="stylesheet" href="/css/responsive.css">


  <link href='http://fonts.googleapis.com/css?family=Raleway:400' rel='stylesheet' type='text/css'>
  <link href='http://fonts.googleapis.com/css?family=Slabo+27px' rel='stylesheet' type='text/css'>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
  </script>

  <script src="/js/star-rating.min.js" type="text/javascript">
  </script>
  <link href="/css/star-rating.min.css" media="all" rel="stylesheet" type="text/css"/>
  <script type="text/javascript" src="/js/bootstrap.js">
  </script>
  <script type="text/javascript" src="/js/centralpage.js">
  </script>
  <meta name="viewport" content="width=device-width">

  </head>
  <header>
    <div class="logo">
      <h1 class="brand">
        Rev-u
      </h1>
    </div>
    <div class="topbuttons">
      <form action="/logout.php">
        <button type="submit" class="btn btn-primary" id="login">
          Logout
        </button>
      </form>
      <button class="btn btn-secondary" id="profilebutton">
        My Profile
      </button>
      <a href="index">
        <button class="btn btn-secondary active" id="homebutton">
          Home
        </button>
      </a>
    </div>
  </header>
  <div class="wrapper">
    <div class="recentfeedcontainer">
      <h3>
        Recent Reviews:
      </h3>

      <div class="loadercontainer">
        <div id="circularG" class="recentloader">
          <div id="circularG_1" class="circularG">
          </div>
          <div id="circularG_2" class="circularG">
          </div>
          <div id="circularG_3" class="circularG">
          </div>
          <div id="circularG_4" class="circularG">
          </div>
          <div id="circularG_5" class="circularG">
          </div>
          <div id="circularG_6" class="circularG">
          </div>
          <div id="circularG_7" class="circularG">
          </div>
          <div id="circularG_8" class="circularG">
          </div>
        </div>
      </div>

 <?php
$url;
$currentfriend;
$friendname;

// $currentUser

$relation = $currentUser->getRelation("FriendRelations");
$results = $relation->getQuery()->find();

if (count($results) != 0)
    {
    for ($i = 0; $i < count($results); $i++)
        {
        $object = $results[$i];
        if ($results[$i]->get("profilePicture") != null)
            {
            $url = $results[$i]->get("profilePicture")->getUrl();
            }
          else
            {
            $url = "img/batmanfacebook.jpg";
            }

        $currentfriend = $results[$i]->get("username");
        if ($results[$i]->get("name") != null) $friendname = $results[$i]->get("name");
          else $friendname = $currentfriend;
        $query = new ParseQuery("Reviews");
        $query->equalTo("User", $currentfriend);
        $query->descending("createdAt");
        $result = $query->first();

        // $review = $result->

        get("text");

        // $rate = $result->

        get("Rating");
        if (count($result) > 0) echo '
<div id = "reviewitem" class=reviewitem_"' . $i . '">
<input id="input-id' . $i . '" type="number" class="rating" min=0 max=5 step=1 data-size="xs" data-show-caption="false" data-show-clear="false" readonly="false">
<div id = "reviewimgcontainer" class="reviewimgcontainer_' . $i . '">
<img src="' . $url . '">
<h5>
<a href="/u/' . $currentfriend . '">
' . $friendname . '
</a>
</h5>
</div>
<p>
' . $result->get("text") . '
</p>
</div>
';
        }

?>
      <script type="text/javascript">


        $('.loadercontainer').addClass('hidden');


      </script>

      <?php
    }


?>


      </div>
  </div>

  <div class="friendscontainer">
    <h3>
      Following
    </h3>

    <ul>


    </ul>


    <div class="loadercontainer">
      <div id="circularG">
        <div id="circularG_1" class="circularG">
        </div>
        <div id="circularG_2" class="circularG">
        </div>
        <div id="circularG_3" class="circularG">
        </div>
        <div id="circularG_4" class="circularG">
        </div>
        <div id="circularG_5" class="circularG">
        </div>
        <div id="circularG_6" class="circularG">
        </div>
        <div id="circularG_7" class="circularG">
        </div>
        <div id="circularG_8" class="circularG">
        </div>
                  </div>
    </div>


</div>



<div class="friendstab">
<img style="border-radius:5px; box-shadow: 0px 0.5px 1.2px 0.5px;
margin-top:235px; width:40px; height:40px" src="img/friends.png">
</div>



</html>

【问题讨论】:

  • 它在生产盒上,您能提供一个指向正在执行此操作的站点的链接吗?您使用的是哪个版本的谷歌浏览器? Chrome 的主要版本号每 6 周更改一次,因此我可能正在使用,您可能不会使用,您应该始终检查您是否拥有最新版本的客户端。另外,如果您从事网页设计,我强烈建议您也下载Canary version of Chrome
  • 谢谢!我会看看。该网站是rev-u.co。这就是我正在做的事情。
  • Uhhhhhhmmmmm 您现在可能想使您的密钥无效。只是说...
  • 是的,没想到。谢谢你提醒我。在工作中。

标签: php html performance google-chrome browser


【解决方案1】:

PHP 在服务器上执行,然后将结果发送到浏览器。浏览器永远不会看到任何 PHP 代码。你一定做错了什么。也许最好与我们分享您的完整代码。

【讨论】:

  • 罗杰。感谢您帮助了解这只野兽。添加了我的代码。
  • 我同意你的看法,但问题是通过移动 php 代码来解决。
  • PHP 可以设置为只及时发送部分内容
【解决方案2】:

始终执行数据库查询和密集循环之前任何输出都会发送到客户端。你的代码一般结构应该是这样的......

<?php
    // Some code hat pulls data from a database. This involves queries, for loops, etc.
?>
<!doctype html>
<html lang=en>
    <head>
        <meta charset=utf-8>
        <title>blah</title>
    </head>
    <body>
        <p>I'm the content</p>
    </body>
</html>

【讨论】:

【解决方案3】:

确实应该投票结束这个过于广泛,但一些提示可能会为您指明正确的方向......

查看您的网络瀑布(开发者工具)。这将告诉您延迟是否真的发生在 HTML 生成中。除非您进行了明确的刷新(有时这样做有充分的理由),否则您会得到一个分块的响应是相当不寻常的。它肯定与您放置结束标签的位置没有有关。如果问题出在您的 PHP 上,请使用分析器来隔离问题。

【讨论】:

  • 查看tools.pingdom.com/fpt/#!/dnzyPC/rev-u.co,RTT 相当高,为 400 毫秒,但问题似乎是基本编码的背景图像,质量太高并且在页面生成周期中加载得太晚。跨度>
  • 哦,这是在您登录并被重定向之后发生的。我想我还没有提到...
猜你喜欢
  • 2018-11-10
  • 2015-12-10
  • 2022-07-21
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多