注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

_

_

 
 
 

日志

 
 

关于session_cache_expire 的理解  

2012-08-31 23:45:44|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

2008-01-24 10:30

关于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过一分钟后还是不过期,我的测试代码在下面,希望高手指点是什么原因,多谢!
<?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()."分钟";
?>
另外,浏览器缓存的工作机理是什么?它对静态或动态的内容是如果管理控制的?

  评论这张
 
阅读(430)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017