header应用:
1.客户端缓存控制:
header("Cache-control: 参数");
参数可以是:
public 页面所有内容都可以缓存.
private 客户端可缓存,但代理服务器不可缓存该页
nocache 页面内容不可缓存,但图片,js,css可被缓存.这适合站点数据是敏感/动态的内容
no-store 不缓存任何内容.
使用以下的方法,使SWF文件强制不从浏览器读本地的缓存。或强制其SWF文件每次都去 读取最新的媒体文件
确保每次都读取最新的SWF文件。
1:使用"Expires"标头 这是在HTML文件中告诉浏览器不读取本地缓存
在<head> </head> 中间加以下代码
<!-- BEGIN INSERT -->
<META HTTP-EQUIV="Expires" CONTENT="Mon, 04 Dec 1999 21:29:02 GMT">
<!-- END INSERT -->
这样的话,每次访问这个文件都会告诉浏览器其缓存版本过期,将重新从服务器端读取最新的文件
2:直接告诉浏览器根本就没有缓存
在包含SWF文件的HTML页面里的</body>插入:
<!-- BEGIN INSERT -->
<HEAD>
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</HEAD>
<!-- END INSERT -->
没有Cache标头 不支持IE5版本,所以微软建议使用带Cacahe控制标头
3:当在HTML页面间连接跳转时
在点击超连接时将强制其从服务器上下载最新文档而不是从本地缓存中浏览
例如:
<A HREF="stockPrices.htm?1">Current stock prices</A>
以上方法将阻止读取本地缓存
如何阻止从缓存中读取加载变量
问题:
当从外部数据源加载数据时,有时浏览器将数据存贮在本地缓存中,这样就导致
在调用loadVariables方法加载数据时会从本地缓存中读取数据而代替从原始数据
读取的信息。
解决:
为确保flash加载的是最新的变量,附加一个随机数变量,这样就可以原始档中加载最新的数据
例如:
方法一:
loadVariables("mypage.asp?nocache=" + random(65000), 0, "POST");
方法二:
loadVariables("mypage.asp?nocache=" + getTimer(), 0, "POST");
这样确保每次加载的数据是最新的.
2.3 使用session函数控制页面缓存
很多情况下,我们要确定我们的网页是否在客户端缓存,或要设置缓存的有效时间,比如我们
的网页上有些敏感内容并且要登录才能查看,如果缓存到本地了,可以直接打开本地的缓存就可以
不登录而浏览到网页了。
使用 session_cache_limiter('private');可以控制页面客户端缓存,必须在session_start()之前调用。
更多参数见http://blog.chinaunix.net/u/27731/showart.php?id=258087的客户端缓存控制。
控制客户端缓存时间用 session_cache_expire(int); 单位(s)。也要在session_start()前调用。
这只是使用session的情况下控制缓存的方法,我们还可以在header()中控制控制页面的缓存。
网页不会被缓存
HTM网页
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache,
must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997
08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
ASP网页
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
PHP网页
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");