设为首页收藏本站
开启辅助访问
切换到宽版

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
查看: 3453|回复: 0
打印 上一主题 下一主题

php中session_cache_limiter和header支持的页面回跳

[复制链接]

我玩的应用:

跳转到指定楼层
楼主
发表于 2012-10-12 07:33:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. session_cache_limiter(private,must-revalidate)是什么意思
  2.   [b]表义一:[/b]
  3.   指定会话页面所使用的缓冲控制方法:
  4.    当session_cache_limiter(\'private\')时,用处是让表单history.go(-1)的时候,填写内容不丢失!就避免页面失效的警告!
  5.   [b]表义二:[/b]
  6.   这个会话与header(\'cache-control:private,must_revalidate\');效果相同
复制代码
  但是要值得注意的是session_cache_limiter()方法要写在session_start()方法之前才有用;
  
  支持页面回跳详解,session_cache_limiter()的使用详解
  
  现在表单的填写,我们可以用AJAX对用户随时进行验证,进行友好的提示,但是在用户没有留意AJAX友好提示,提交了错误的表单,跳回原页,而填写的信息却全部丢失了。要支持页面回跳,有以下的办法:
  
  1. 1.使用session_cache_limiter方法:
复制代码
Php代码
  
  
  1. session_cache_limiter(\'private,must-revalidate\');  
复制代码
  session_cache_limiter(\'private,must-revalidate\');但是要值得注意的是session_cache_limiter()方法要写在session_start()方法之前才有用;
  
  1. 2.用header来设置控制缓存的方法:
复制代码
  在开发过程中,往往因为表单出错而返回页面的时候填写的信息都不见了,为了支持页面回跳,可以通过两种方法实现。
  第一,使用Header方法设置消息头Cache-control
  引用:
  header(\'Cache-control: private, must-revalidate\');//支持页面回跳
  第二,使用session_cache_limiter方法
  引用:
  //注意要写在session_start方法之前
  session_cache_limiter(\'private, must-revalidate\');
  补充:
  Cache-Control消息头域说明
  Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:
  Public指示响应可被任何缓存区缓存。
  Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
  no-cache指示请求或响应消息不能缓存
  no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
  min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
  max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
  关于表单刷新
  问:为什么我在点击浏览器的后退按钮后,所有字段的信息都被清空了?
  答:这是由于你在你的表单提交页面中使用了 session_start 函数。该函数会强制当前页面不被缓存。解决办法为,在你的 Session_start 函数后加入 header(双引号Cache-control: private双引号); 注意在本行之前你的PHP程序不能有任何输出。
  补充:还有基于session的解决方法,在session_start前加上
  引用:
  session_cache_limiter(\'nocache\');// 清空表单
  session_cache_limiter(\'private\'); //不清空表单,只在session生效期间
  session_cache_limiter(\'public\'); //不清空表单,如同没使用session一般
  可以在session_start();前加上 session_cache_limiter(\'private,max-age=10800\');
  
  from:http://home.lupaworld.com/home-s ... blog-id-233420.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2024-9-22 06:58 , Processed in 0.113522 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表