Maison  >  Article  >  développement back-end  >  Comment implémenter la sortie fragmentée BigPipe via php

Comment implémenter la sortie fragmentée BigPipe via php

jacklove
jackloveoriginal
2018-06-09 15:03:511781parcourir

Principe : Utilisez ob_flush() et flush() pour afficher le contenu du tampon à l'avance, et le navigateur peut le charger partie à l'avance du contenu, pas besoin d'attendre que toutes les sorties soient terminées avant de charger.

Divisez le contenu de la page en petits blocs, affichez-en un puis le suivant, afin que les utilisateurs puissent voir le contenu de la page le plus tôt possible et optimiser l'expérience utilisateur.

Tout d'abord, le contenu de head doit être chargé en premier, et le contenu statique tel que CSS et Javascript doit être chargé le plus tôt possible. Par conséquent, flush() doit être utilisé pour. sortie après tête.

Exemple : Produisez d'abord le contenu statique de la tête, puis divisez chaque e388a4556c0f65e1904146cc1a846bee

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title> Big Pipe </title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <style type="text/css">
  body{margin:0px; background:#CCCCCC;}
  p{text-align:center; margin:10px;}
  img{width:450px;}
  </style>
 </head>
 <?php cache_flush() ?>
 <body>  
  <p><img src="http://image.tianjimedia.com/uploadImages/2013/240/5CPOE4UZ2T40.jpg"></p>
  <?php cache_flush(); ?>
  <p><img src="http://image.tianjimedia.com/uploadImages/2013/240/6893CY9XEQD1.jpg"></p>
  <?php cache_flush(); ?>
  <p><img src="http://image.tianjimedia.com/uploadImages/2013/240/83H52SG02V32.jpg"></p>
 </body>
</html>
<?php
function cache_flush($sec=1){
    ob_flush();
    flush();
    usleep($sec*1000000);
}
?>

Problèmes à noter :
1. Essayez d'utiliser une seule sortie pour générer autant de contenu que possible.
2. Essayez de charger de manière synchrone.
3. Plus les morceaux sont divisés, mieux cela dépend de la demande réelle.
4.ob_flush() et flush() doivent être utilisés en même temps, car flush() n'aura aucun effet dans certains cas.

Cet article explique comment implémenter la sortie du bloc BigPipe via php. Pour plus de contenu connexe, veuillez faire attention au site Web chinois de php.

Recommandations associées :

Introduction connexe à l'optimisation MySQL des performances d'insertion

Comment utiliser la personnalisation commune de PHP Méthodes

Comment crypter/déchiffrer des fichiers en utilisant le OU exclusif (XOR) via php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn