session_cache_limiter,它是session在客戶端的緩存方式,有nocache,private,private_no_expire,publice主這幾種。
cache是屬於瀏覽器的特性,它決定你瀏覽網頁的緩存方式,沒有緩存的情況會使你按瀏覽的“后退”鍵時提示要你更新連接,之前的內容就沒有了,比如你填入的表單信息,都被丟失。
通過header("Cache-Control: no-store, no-cache, must-revalidate");函數也一樣達到效果。
然而,session的處理機制里,就強制自動調用了header函數設置cache,這個置就由php.ini中的缺省值session.cache_limiter值或由session_cache_limiter函數設定所取代。
session_cache_limiter內的幾個參數意義是:
nocache:當然是不緩存(比如:表單信息被清除),但公共變量可以緩存
private:私有方式緩存(比如:表單信息被保留,但在生存期內有效)
private_no_cache:私有方式但不過期(表單信息被保留)
publice:公有方式,(表單信息也被保留)
它們之間的具體區別,我還不是太清楚,可以區別的是除nocache外其它的都可以緩存,private方式還受生存期影響,這個生存期應該是由session.cache_expire給定,它在php.ini中設置或session_cache_expire函數設置,缺省是180分鍾。
不過,我做過試驗,設置session.cache_expire置為1分鍾,但實際情況不起作用,cache過一分鍾后還是不過期,我的測試代碼在下面,希望高手指點是什么原因,多謝!
1 <?PHP 2 if (isset($_POST['username'])) { 3 $sess_lim = array("none","nocache","private","private_no_expire","public"); 4 5 //session_cache_expire(1); 6 //session_cache_limiter( $sess_lim[2] ); 7 echo "sess_lim:".$sess_lim[2]; 8 session_cache_limiter('private'); 9 session_cache_expire(1); 10 $cache_expire = session_cache_expire(); 11 12 session_start(); 13 $_SESSION["username"] = $_POST['username']; 14 ++$_SESSION["count"] ; 15 echo "<pre>"; 16 print_r($_SESSION); 17 echo "</pre>"; 18 echo "</ p></ br>"; 19 echo 'sessID:'.session_id(); 20 21 }; 22 ?> 23 <form action="" method="post"> 24 <input type="text" name="username" value="<?php echo $_SESSION['username']?>"> 25 <input type="submit" name="Submit" value="提交"> 26 </form> 27 </ br> 28 29 <?PHP 30 //phpinfo(); 31 echo "expire:".session_cache_expire()."分鍾"; 32 ?>
另外,瀏覽器緩存的工作機理是什么?它對靜態或動態的內容是如果管理控制的?
