PHP中如何禁用用户本地浏览器缓存?


题境: 企业内部一些文件,通过flexpaper在线浏览,原本的office文件都转化成了swf格式,而公司这些文件是只允许员工在线浏览,不允许复制、打印与传播的,如果本地缓存(临时)文件夹中包含这个swf文件,就可以直接拿走并传播了(即使不能完全控制住,但如果达到IE临时文件夹中没有随意缓存此文件的话,也能一定程度上达到效果)

我希望用户本地IE临时文件夹不能缓存某页面的内容,查找资料一般都是php中header控制,html中meta控制,然后我也试用了,结果都没达到效果,在IE对应的本地缓存文件夹中还是可以找到该页面的内容,请各位帮忙指点一下,谢谢了

firefox中response headers中的内容:

该页面的代码:

页面缓存 php meta header

jsy678 11 years, 4 months ago

我在 IE 对应的本地缓存文件夹中还是可以找到该页面的内容

在缓存文件夹中找到很正常。

至于你的问题「如何禁用用户 本地 缓存」,可以把缓存文件夹设置为只读。别笑,我很正经的。

你只看了 header,为什么不看看 Status Code 啊?如果是 304,则表示 Not Modified,说明被缓存了。

如果被缓存了,会不会在本地缓存文件夹中找到呢?答案是可能会。

本地 缓存是浏览器的功能,可以不用去管。

禁用缓存的目的是:当你去请求 web server 时,server 总是把最新的文件给出浏览器,而不用检测这个文件是否更新过。当他传回浏览器的时候,浏览器 IE 就把这个文件(或者一部分)放到本地存起来。

虽然这个文件夹被称为「缓存文件夹」,其实他只是是「临时文件夹」。

其它浏览器也许不使用「缓存文件夹」,比如使用一个小型数据库系统,例如 sqlite。

其实,把内存的内容放到硬盘上,是一种传统,也是一种哲学。

操作系统也经常把一些内存放到硬盘里,「微软」管它叫「虚拟内存」。

最后回答作者的问题:如何禁用本地缓存?没必要。

我非要禁用。

  1. 设置为只读
  2. 在 IE 的设置里面应该可以禁用
  3. 修改注册表
ye11ow answered 11 years, 4 months ago

Your Answer