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