PHP实时输出报文到浏览器
Yahoo的前端优化实践中有一条是先把html里的
部分先输出(Flush the Buffer Early),这样做浏览器得到head后能先下载head里的css/js文件,而不用等到整个html下载完了才去下载head里的css/js,从而提高网页打开的速度。http1.1里增加了一个Transfer-Encoding: chunked报头,这个报头的作用可以把报文分成多块输出。
报文的格式如下:
Java代码
Chunked-Body = *chunk
"0" CRLF
footer
CRLF
chunk = chunk-size [ chunk-ext ] CRLF
chunk-data CRLF
hex-no-zero =
chunk-size = hex-no-zero *HEX
chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-value ] )
chunk-ext-name = token
chunk-ext-val = token | quoted-string
chunk-data = chunk-size(OCTET)
footer = *entity-header
Chunked-Body = *chunk
"0" CRLF
footer
CRLF
chunk = chunk-size [ chunk-ext ] CRLF
chunk-data CRLF
hex-no-zero =
chunk-size = hex-no-zero *HEX
chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-value ] )
chunk-ext-name = token
chunk-ext-val = token | quoted-string
chunk-data = chunk-size(OCTET)
footer = *entity-header
CRLE:回车换行(\r\n)
例如:
Java代码
... #很多报头
Transfer-Encoding: chunked #报头2个CRLE后开始报文
1 #chunk的大小,十六进制,然后加个CRLE
a #chunk数据,然后加个CRLE
4 #chunk的大小,十六进制,然后加个CRLE
test #chunk数据,可以不断循环分块输出,然后加个CRLE
0 #chunk结束,0 + 2个CRLE
... #很多报头
Transfer-Encoding: chunked #报头2个CRLE后开始报文
1 #chunk的大小,十六进制,然后加个CRLE
a #chunk数据,然后加个CRLE
4 #chunk的大小,十六进制,然后加个CRLE
test #chunk数据,可以不断循环分块输出,然后加个CRLE
0 #chunk结束,0 + 2个CRLE
在php里使用ob_flush后,将自动加上Transfer-Encoding: chunked报头实现分块输出,但是在使用过程中经常达不到效果。不得不考虑一些问题
一、php的缓冲区
如果你的php是以apache模块运行,那请使用flush函数来通知php输出。如果是以fastcgi模式运行则使用ob_flush通知php。这时gzip将失效,Chunked方式不支持每块都独立压缩。只能全部输出压缩后,将压缩包分块输出。为了保证兼容性,先调用ob_flush,再调用flush。
二、浏览器的缓冲区
当遇到Transfer-Encoding: chunked报头后,浏览器做什么反应,这个还是要看浏览器的实现了。在我的实验中,firefox不管chunk数据大小都会做实时显示,而ie8和chrome则需要一定长度后才显示。所以,需要先输出一定的大小后某些浏览器才有效果。
三、反向代理服务器
你使用的反向代理服务器支持http1.1协议吗?它是怎么处理后端是chunked方式的?proxy缓冲没满之前遇到chunked会按照后端来输出吗?
nginx的proxy功能只支持http1.0,并且它只有proxy buffer满了才会输出。
四、FastCGI缓冲
如果以FastCGI模式运行,可能Web Server有自己的fastcgi缓冲,等待缓冲满了才输出(nginx就这样)。flush函数只能通知php的output缓冲输出
Chunked transfer encoding
Hypertext Transfer Protocol -- HTTP/1.1 Chunked transfer encoding
深入理解ob_flush和flush的区别

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Artikel ini menyediakan panduan terperinci untuk muat turun selamat aplikasi OUYI OKX di China. Oleh kerana sekatan ke kedai aplikasi domestik, pengguna dinasihatkan untuk memuat turun aplikasi melalui laman web rasmi OUYI OKX, atau menggunakan kod QR yang disediakan oleh laman web rasmi untuk mengimbas dan memuat turun. Semasa proses muat turun, pastikan anda mengesahkan alamat laman web rasmi, periksa kebenaran aplikasi, lakukan imbasan keselamatan selepas pemasangan, dan membolehkan pengesahan dua faktor. Semasa penggunaan, sila mematuhi undang -undang dan peraturan tempatan, gunakan persekitaran rangkaian yang selamat, melindungi keselamatan akaun, berhati -hati terhadap penipuan, dan melabur secara rasional. Artikel ini hanya untuk rujukan dan tidak menjadi nasihat pelaburan.

Panduan Masuk Keselamatan Coinbase: Bagaimana untuk mengelakkan tapak pancingan data dan penipuan? Phishing dan penipuan menjadi semakin berleluasa, dan sangat penting untuk mengakses portal log masuk rasmi Coinbase. Artikel ini menyediakan panduan praktikal untuk membantu pengguna mencari dan menggunakan portal log masuk rasmi terkini Coinbase untuk melindungi keselamatan aset digital. Kami akan meliputi cara mengenal pasti tapak pancingan data, dan bagaimana untuk log masuk dengan selamat melalui laman web rasmi, aplikasi mudah alih atau platform pihak ketiga yang dipercayai, dan memberikan cadangan untuk meningkatkan keselamatan akaun, seperti menggunakan kata laluan yang kuat dan membolehkan pengesahan dua faktor. Untuk mengelakkan kerugian aset kerana log masuk yang salah, pastikan anda membaca artikel ini dengan teliti!

Sebagai platform perdagangan aset digital terkemuka di dunia, Ouyi Okx menarik banyak pelabur dengan produk dagangannya yang kaya, jaminan keselamatan yang kuat dan pengalaman pengguna yang mudah. Walau bagaimanapun, risiko keselamatan rangkaian menjadi semakin teruk, dan bagaimana untuk mendaftarkan akaun OUYI OKX rasmi adalah penting. Artikel ini akan menyediakan portal pendaftaran terkini untuk laman web rasmi OUYI OKX, dan menerangkan secara terperinci langkah-langkah dan langkah berjaga-jaga untuk pendaftaran yang selamat, termasuk cara mengenal pasti laman web rasmi, menetapkan kata laluan yang kuat, membolehkan pengesahan dua faktor, dan lain-lain, untuk membantu anda memulakan perjalanan pelaburan aset digital anda dengan selamat dan mudah. Sila ambil perhatian bahawa terdapat risiko dalam pelaburan aset digital, sila buat keputusan berhati -hati.

Artikel ini menyediakan panduan muat turun aplikasi Binance Exchange yang selamat dan boleh dipercayai untuk membantu pengguna menyelesaikan masalah memuat turun aplikasi Binance di negara ini. Oleh kerana sekatan ke atas kedai-kedai aplikasi domestik, artikel itu mengesyorkan keutamaan untuk memuat turun pakej pemasangan APK dari laman web rasmi Binance, dan memperkenalkan tiga kaedah: muat turun laman web rasmi, muat turun kedai pihak ketiga, dan perkongsian rakan-rakan. Di samping itu, artikel itu juga mengingatkan pengguna untuk memahami undang -undang dan peraturan tempatan, memberi perhatian kepada keselamatan rangkaian, melindungi maklumat peribadi, berhati -hati dengan penipuan, pelaburan rasional, dan urus niaga yang selamat. Pada akhir artikel, artikel itu sekali lagi menekankan bahawa memuat turun dan menggunakan aplikasi Binance mesti mematuhi undang -undang dan peraturan tempatan, dan dengan risiko anda sendiri, dan tidak menjadi nasihat pelaburan.

Artikel ini menyediakan panduan yang selamat dan boleh dipercayai untuk membantu pengguna mengakses laman web rasmi terbaru Bitmex Exchange dan meningkatkan keselamatan transaksi. Oleh kerana ancaman pengawalseliaan dan siber, adalah penting untuk mengenal pasti laman web Bitmex rasmi dan mengelakkan laman web pancingan data mencuri maklumat dan dana akaun. Artikel ini memperkenalkan pencarian portal laman web rasmi melalui platform cryptocurrency yang dipercayai, media sosial rasmi, media berita, dan melanggan e-mel rasmi. Ingat, perdagangan cryptocurrency berisiko tinggi, sila melabur dengan berhati -hati.

Versi Web Exchange Coinbase adalah popular untuk kemudahannya, tetapi akses yang selamat adalah penting. Artikel ini bertujuan untuk membimbing pengguna untuk log masuk ke versi Web Coinbase rasmi dengan selamat dan mengelakkan laman web dan penggodam phishing. Kami akan menerangkan secara terperinci bagaimana untuk mengesahkan portal rasmi melalui enjin carian, platform pihak ketiga yang dipercayai dan media sosial rasmi, dan menekankan langkah-langkah keselamatan seperti memeriksa kunci keselamatan bar alamat, membolehkan pengesahan dua faktor, mengelakkan Wi-Fi awam, mengubah kata laluan secara berkala, dan berjaga-jaga dengan e-mel untuk memastikan keselamatan aset digital anda. Akses yang betul ke laman web Coinbase rasmi adalah langkah pertama untuk melindungi mata wang digital anda.

Sebagai platform perdagangan derivatif cryptocurrency veteran, ketepatan pintu masuk laman web rasminya adalah penting. Oleh kerana laman web phishing yang berleluasa, kemasukan yang salah ke laman web palsu boleh menyebabkan kecurian akaun dan kehilangan dana. Artikel ini bertujuan untuk membimbing pengguna untuk mengakses laman web rasmi Bitmex dengan selamat, menyediakan pelbagai kaedah seperti platform maklumat cryptocurrency yang dipercayai (seperti coinmarketcap, coingecko), media sosial rasmi, pengesahan alamat yang sedia ada dan saluran sokongan rasmi, dan menekankan penggunaan langkah-langkah keselamatan seperti pengesahan

Selesaikan masalah antara muka pihak ketiga yang kembali 403 dalam persekitaran Node.js. Apabila kita menggunakan Node.js untuk memanggil antara muka pihak ketiga, kita kadang-kadang menghadapi kesilapan 403 dari antara muka yang kembali 403 ...
