關於session_cache_expire 的理解


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 ?>

 

另外,瀏覽器緩存的工作機理是什么?它對靜態或動態的內容是如果管理控制的?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM