就是一般我們用echo print 輸出字符到頁面上的時(shí)候,意味著只要執(zhí)行到了echo,php就會(huì)立即輸出到客戶端,但php有幾個(gè)和緩沖相關(guān)的函數(shù),他可以控制你輸出的行為,就是不立馬輸出,而是等你調(diào)用了ob_flush/flush函數(shù),才輸出。而pw就是利用了這個(gè)原理,等頁面所有的內(nèi)容都生成完畢了,最后調(diào)footer()時(shí),ob_get_contents(),獲取緩沖的內(nèi)容,通過正則批量替換url,構(gòu)造rewrite的url格式。
關(guān)于ob,其實(shí)有兩種主要的使用場(chǎng)景,一個(gè)是實(shí)現(xiàn)頁面壓縮輸出 - ob_gzhandler;再一個(gè)是在ajax/自定義api返回?cái)?shù)據(jù)時(shí),程序執(zhí)行過程中,你不知道前面的程序是否有些意外的輸出字符如空格、空行等,他們?cè)跀?shù)據(jù)返回時(shí)會(huì)造成很多意外情況,所以可以在你輸出數(shù)據(jù)前,清除前面的緩沖內(nèi)容,重新開始輸出。
官方默認(rèn)的重寫規(guī)則(注:重寫是web服務(wù)器 - 如apache、nginx或應(yīng)用容器tomcat的功能,不是程序語言自己的功能),如pw的一條重寫規(guī)則 - apache:
新聞熱點(diǎn)
疑難解答
圖片精選