關于header()前面 為(wèi)什(shén)麽不(bù)能(néng)有(yǒu)任何輸出的(de)問(wèn)題。
之前在header () 之前輸出,并沒有(yǒu)任何報(bào)錯(cuò)信息。
header() 官網定義必須在任何實際輸出之前調用(yòng),不(bù)管是(shì)普通(tōng)的(de)HTML标簽,還(hái)♣是(shì)文(wén)件(jiàn)或PHP輸出的(de)空(kōng)行(xíng),空(kōng)格。但(dàn)是(shì),在測試的(de)時(shí)候發現(xiàn)有σ(yǒu)些(xiē)輸出是(shì)可(kě)以的(de)。
這(zhè)是(shì)因為(wèi)——緩存。
當執行(xíng)輸出的(de)時(shí)候,比如(rú) echo,print。輸出并沒有(yǒu)立即送給 web server, 而是(shì)将數(shù)據寫入 php bufferΩ。php output_buffering 機(jī)制(zhì)好(hǎo)處當然提升性能(néng)。其實 php 文♥(wén)件(jiàn)最終在浏覽器(qì)上(shàng)顯示,走過3個(gè)緩沖階段: php buffer=》₹web server buffer=》browser buffer。 最後顯示到(dào)浏覽器(qì)
默認情況下(xià),php buffer 是(shì)開(kāi)啓的(de),而且該 buffer← 默認值是(shì)4096,即4 kb。你(nǐ)可(kě)以通(tōng)過在php.ini配置文(wén)件(jiàn)中找到(dào)output_buffering配置
服務器(qì)會(huì)緩存輸出,雖然你(nǐ)使用(yòng)了(le)echo / print 但(dàn)在那(nà)個(gè)時(shí)候服務器(qì)還(hái£)沒有(yǒu)将這(zhè)些(xiē)內(nèi)容作(zuò)為(wèi)HTTP報(bào)文(wén)輸出,這(zhè)個(gè)時(shí)候仍可(¶kě)以有(yǒu)機(jī)會(huì)修改HTTP頭。如(rú)果隻想驗證下(xià)header官網定義的(de)不(bù)得(de)在任何輸出之前輸出引發錯(cuò)誤,可≥(kě)以在header之前輸出一(yī)個(gè)絕對(duì)超過緩存大(dà)小(xiǎo)的(de)HTTP內(nèi≤)容就(jiù)好(hǎo)了(le)。
如(rú)果output_buffering=off,被設置成了(le)off,那(nà)麽頁面內(nèi)容就(jiù)是(shì)即時(shí)輸出的(de),這(zhè)時(shí)header()前面存在html元素或者echo、prin®t的(de)元素肯定是(shì)不(bù)行(xíng)的(de)。
上(shàng)一(yī)篇:Flutter——未來(lái)一(yī)段時(shí)間(jiān)內('nèi)的(de)跨平台開(kāi)發終極之選下(xià)一(yī)篇:類庫存系統的(de)開(kāi)發