| 關(guān)于session_cache_expire 的理解 |
| 【編輯:C1GStudio.com】 session_cache_limiter,它是session在客戶(hù)端的緩存方式,有nocache,private,private_no_expire,publice主這幾種。 cache是屬于瀏覽器的特性,它決定你瀏覽網(wǎng)頁(yè)的緩存方式,沒(méi)有緩存的情況會(huì )使你按瀏覽的“后退”鍵時(shí)提示要你更新連接,之前的內容就沒(méi)有了,比如你填入的表單信息,都被丟失。 通過(guò)header("Cache-Control: no-store, no-cache, must-revalidate");函數也一樣達到效果。 然而,session的處理機制里,就強制自動(dòng)調用了header函數設置cache,這個(gè)置就由php.ini中的缺省值session.cache_limiter值或由session_cache_limiter函數設定所取代。 session_cache_limiter內的幾個(gè)參數意義是: nocache:當然是不緩存(比如:表單信息被清除),但公共變量可以緩存 private:私有方式緩存(比如:表單信息被保留,但在生存期內有效) private_no_cache:私有方式但不過(guò)期(表單信息被保留) publice:公有方式,(表單信息也被保留) 它們之間的具體區別,我還不是太清楚,可以區別的是除nocache外其它的都可以緩存,private方式還受生存期影響,這個(gè)生存期應該是由session.cache_expire給定,它在php.ini中設置或session_cache_expire函數設置,缺省是180分鐘。 不過(guò),我做過(guò)試驗,設置session.cache_expire置為1分鐘,但實(shí)際情況不起作用,cache過(guò)一分鐘后還是不過(guò)期,我的測試代碼在下面,希望高手指點(diǎn)是什么原因,多謝! <?PHP if (isset($_POST[‘username‘])) { $sess_lim = array("none","nocache","private","private_no_expire","public"); session_cache_expire(1); session_cache_limiter( $sess_lim[2] ); session_start(); $_SESSION["username"] = $_POST[‘username‘]; ++$_SESSION["count"] ; echo "<pre>"; print_r($_SESSION); echo "</pre>"; echo "</ p></ br>"; echo ‘sessID:‘.session_id(); }; ?> <form action="" method="post"> <input type="text" name="username" value="<?php echo $_SESSION[‘username‘]?>"> <input type="submit" name="Submit" value="提交"> </form> </ br> <?PHP //phpinfo(); echo "expire:".session_cache_expire()."分鐘"; ?> 另外,瀏覽器緩存的工作機理是什么?它對靜態(tài)或動(dòng)態(tài)的內容是如果管理控制的? |
聯(lián)系客服