1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          白話BigPipe

          來源:互聯網轉載 時間:2024-01-29 08:04:14

          所謂BigPipe,指的是Facebook開發的用來改善客戶端響應速度的技術。本質上講,其實它并不是新事物,原理上等同于Yahoo在Best Practices for Speeding Up Your Web Site里提出的Flush the Buffer Early,不過BigPipe的實現更靈活,所以有必要了解一二。

          我們平常瀏覽網頁時的體驗通常是串行的:瀏覽器發起請求,服務器收到后渲染頁面,在此期間,瀏覽器除了等待別無選擇,演示代碼如下:

          <?phpsleep(1);$header = 'header';sleep(1);$content = 'content';sleep(1);$footer = 'footer';?><html><head><title>test</title></head><body><p ><?php echo $header; ?></p><p ><?php echo $content; ?></p><p ><?php echo $footer; ?></p></body></html>

          注:代碼里用sleep模擬服務端耗時的操作。

          如果我們把串行改成并行的方式呢?每當服務器生成新的內容立刻發送給瀏覽器,瀏覽器立刻渲染,不必等到接收到全部數據再處理,毫無疑問會提升用戶體驗,代碼如下:

          提醒一下,代碼最后運行在Apache + Mod PHP環境,舊版本Apache可能需要關閉GZip。如果是Nginx + PHP FastCGI環境,因為fastcgi_buffers的存在,運行效果會非你所愿。

          <html><head><title>test</title></head><body><?php sleep(1); ?><p ><?php echo str_pad('header', 1024); ?></p><?php ob_flush(); flush(); ?><?php sleep(1); ?><p ><?php echo str_pad('content', 1024); ?></p><?php ob_flush(); flush(); ?><?php sleep(1); ?><p ><?php echo str_pad('footer', 1024); ?></p><?php ob_flush(); flush(); ?></body></html>

          注意:某些瀏覽器必須接收到一定長度的內容才開始渲染,所以代碼里用到了str_pad。

          更新:新版Nginx增加了一個fastcgi_buffering指令,可以用來關閉fastcgi的buffer功能。

          代碼里用到ob_flush和flush把頁面分塊刷新緩存到瀏覽器,此時如果使用Firebug查看響應頭的話,會發現:Transfer-Encoding=chunked,如此一來瀏覽器就可以分塊渲染了。

          BigPipe在此基礎上更進一步,演示代碼如下:

          <html><head><title>test</title></head><body><p ></p><p ></p><p ></p><?php ob_flush(); flush(); ?><?php sleep(1); $header = str_pad('header', 1024); ?><script>document.getElementById("header").innerHTML = "<?php echo $header; ?>";</script><?php ob_flush(); flush(); ?><?php sleep(1); $content = str_pad('content', 1024); ?><script>document.getElementById("content").innerHTML = "<?php echo $content; ?>";</script><?php ob_flush(); flush(); ?><?php sleep(1); $footer = str_pad('footer', 1024); ?><script>document.getElementById("footer").innerHTML = "<?php echo $footer; ?>";</script><?php ob_flush(); flush(); ?></body></html>

          使用BigPipe,先刷新布局(Layout),然后按塊(header,content,footer)刷新相應的Javascript代碼,從而實現頁面內容的填充。

          BigPipe之所以使用Javascript渲染頁面,是因為這樣一來渲染頁面的時候,就不會被塊的位置束縛住,如果我們的服務器支持多線程,那么就可以同時處理多塊內容,哪塊先處理好就把哪塊刷新到瀏覽器,即便不支持多線程,服務器也可以按照內容的重要程度分主次先后渲染,不必拘泥于HTML代碼的物理順序。

          此外還應注意一下BigPipe和Ajax二者的區別,對于一個分成若干個塊的頁面而言,如果使用Ajax的話,每一塊都需要單獨發送一個HTTP請求,而如果使用BigPipe的話,不管有多少塊,都僅有一個HTTP請求。所以Ajax對服務器造成的壓力會是BigPipe的若干倍。

          注:BigPipe不利于seo,應用時可通過User Agent判斷請求是人還是搜索引擎,如果是人的話,則應用BigPipe渲染模式,如果是搜索引擎的話,則應用傳統渲染模式。

          參考:Facebook網站的Ajax化、緩存和流水線(PDF)。

          標簽:bigpipe-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          餅干圓圓原唱完整版?曲奇之歌是一首版的兒歌,由洪和泡泡呂演唱。餅干是圓的。我最喜歡餅干。餅干是甜的。我可以自己做餅干。嘿。揉成一團。餅干圓圓的。餅干是圓形的,放在圓形烤箱里。餅干,甜的,滴答,滴答,轉,轉。嘿曹保果洪:哇,我們做的餅干真好吃。多做些餅干。(小孩:好的)餅干又扁又扁。餅干是圓的。我最喜歡餅干。餅干是甜的。我可以自己做餅干。嘿泡泡呂:孩子們,做餅干是不是很有趣?(孩子:是)揉成一團。餅...

          PS怎樣使文字具有立體效果和陰影?1.新建文檔,填充50%灰。寬度1920,高度883??旖萱I“U”,六邊形工具,畫6字的圓圈部分。2.頂部工具屬性欄設置默認,形狀設置為路徑。窗口-路徑,調出路徑后蓋。3.新建路徑圖層1。按著CTRL鍵拖動電源,在手機屏幕上畫出個弧形。4.新建路徑圖層2,“P”切換到畫筆工具,畫出6字的頭部,顯卡左下角ESC鍵,退出套索工具編輯模式。然后得到兩個路徑。5.加強效果...

          糯米八寶飯怎么做?1. 將500克糯米浸泡一夜,直到用手指碾碎。2. 準備其他材料:枸杞、山楂、紅糖50克、葡萄干50克。3. 碗底刷油,先將枸杞、紅棗、葡萄干放在第一層,按順序擺放,再在上面加糯米使其光滑。4. 第二層把山楂、葡萄干、枸杞、紅糖都放進去,再撒上糯米。5. 第三層依次是枸杞、山楂、葡萄干、紅糖,最后一層是糯米。6. 加開水浸泡一米以上。7. 蒸50多分鐘,你就可以從鍋里出來了,太棒...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>