http 缓存相关

首先分享一下CI中文件强制下载时的header设置。

[php] view plain copy

    if (strpos($_SERVER[‘HTTP_USER_AGENT‘], "MSIE") !== FALSE)
            {
                header(‘Content-Type: "‘.$mime.‘"‘);
                header(‘Content-Disposition: attachment; filename="‘.$filename.‘"‘);
                header(‘Expires: 0‘);
                header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0‘);
                header("Content-Transfer-Encoding: binary");
                header(‘Pragma: public‘);
                header("Content-Length: ".strlen($data));
            }
            else
            {
                header(‘Content-Type: "‘.$mime.‘"‘);
                header(‘Content-Disposition: attachment; filename="‘.$filename.‘"‘);
                header("Content-Transfer-Encoding: binary");
                header(‘Expires: 0‘);
                header(‘Pragma: no-cache‘);
                header("Content-Length: ".strlen($data));
            }

其他的都比较好理解,主要是关于Cache-control和Pragma的设置让人比较迷惑。

关于Cache-Control的must-revalidate:强制页面不缓存,作用与no-cache相同,但更严格,强制意味更明显。详细作用请参考:http://hi.baidu.com/chenleibupt/blog/item/9627bec6932e5a179c163df2.html

关于post-check和pre-check:Internet Explorer 5对于HTTP头信息使用两种新的时间间隔指示:pre-check 和post-check。pre-check扩展名定义了这样一段时间间隔(以秒记):即在这段时间间隔之后,一个对象在显示给用户之前应被选中进行更 新。选中对象也可以发生在该对象已经显示给用户之后,但是,要保证在用户下次想要看这个对象时,被高速缓存起来的副本是更新过的。post-check扩 展名定义了这样一段时间间隔(以秒记):即在这段时间之后,在显示给用户之前,该对象被选中进行更新。即post-check=0,pre- check=0是IE5.0才有的防cache声明。(参考自http://bbs.chinaunix.net/thread-704320-1-1.htmlhttp://blog.sina.com.cn/s/blog_5595d51401000b23.html

关于Pragma:no-cache,跟Cache-Control: no-cache相同。Pragma: no-cache兼容http
1.0 ,Cache-Control: no-cache是http 1.1提供的。因此,Pragma: no-cache可以应用到http
1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1.

关于Pragma:public 作用未知,还请阅读本篇文章的各位大侠给予解释。

时间: 2024-12-29 12:19:56

http 缓存相关的相关文章

InnoDB缓存相关

InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理.在数据库系统中,由于CPU速度和磁盘速度之前的鸿沟,通常使用缓冲池技术来提高数据库的整体性能. 1. Innodb_buffer_pool 缓冲池(buffer pool)简单来说就是一块内存区域.缓冲池中缓存的数据页类型有:索引页.数据页.undo页.插入缓冲.自适应哈希索引.InnoDB存储的锁信息.数据字典信息等.不能简单认为,缓冲池只是缓存索引页和数据页,它们只是占缓冲池很大的一部分而已. 在数据库中进行读取页的操

浏览器缓存相关http头

最近看雅虎黄金34条,学习下优化网站性能的方法.其中有一条:"为文件头指定Expires或Cache-Control",具体来说指对于静态内容:设置文件头过期时间Expires的值为"Never expire"永不过期:而对于动态内容:使用恰当的Cache-Control文件头来帮助浏览器进行有条件的请求. 这一条可以和雅虎34条的第一条联系起来,那就是尽量减少http的请求次数(雅虎34条很多都是努力去减少http请求为目的的),毕竟如果有太多的资源需要下载需要新

php缓存相关

在php运行期间,php引擎要对php源码进行处理,(词法分析,语法分析等)然后生成opcode. 然后再运行.在这个阶段可以把opcode缓存起来,当下次需要运行这段程序的时候,就避免了再次 进行词法分析,语法分析,直接拿opcode来用. eAccelerator就是这样的程序. 用vld查看php的opcode: http://pecl.php.net/package/vld/0.12.0/windows 在上面的地址下载vld,解压后 将 php_vld.dll,拷贝到ext目录下. 修

Django的contenttypes应用、缓存相关

一.django的contenttypes contenttypes 是Django内置的一个应用 , 可以追踪项目中所有app 和 model 的对应关系, 并记录djang_content_type 表中. 每当我们创建了新的model 并执行数据库迁移后 , django_content_type 表中就会自动新增一条记录 , 比如我在应用pp01的models.py中创建表class Electrics(models.Model): pass.从数据库查看django_content_t

python后端面试第二部分:数据储存与缓存相关--长期维护

##################    数据储存与缓存相关        ####################### mysql数据库, redis数据库, 原文地址:https://www.cnblogs.com/andy0816/p/12228500.html

session 一级缓存相关

Session 具有一个缓存, 位于缓存中的对象称为持久化对象, 它和数据库中的相关记录对应. Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 来同步更新数据库, 这一过程被称为刷新缓存(flush). hibernate把对象分为三种状态:Session 的特定方法能使对象从一个状态转换到另一个状态. •flush:Session 按照缓存中对象的属性变化来同步更新数据库: •默认情况下 Session 在以下时间点刷新缓存: –显式调用 Session

Android系统缓存相关

1. 如何获取每个应用的缓存文件及大小 PackageManager pm = context.getPackageManager(); try { Method mmethod = PackageManager.class.getMethod("getPackageSizeInfo", String.class,IPackageStatsObserver.class); List<PackageInfo> packageInfos = pm.getInstalledPac

ios 缓存相关信息收集

链接:http://www.cnblogs.com/pengyingh/category/353093.html 使用NSURLCache让本地数据来代替远程UIWebView请求 摘要: 原文作者:Matt Gallagher原文链接:http://cocoawithlove.com/2010/09/substituting-local-data-for-remote.html翻译:http://disanji.net/2010/11/24/substituting-local-data-fo

nginx的proxy_cache缓存相关配置

本文主要介绍nginx的proxy_cache缓存的配置及nginx平滑升级. nginx的proxy_cache缓存用于反向代理时,对后端内容资源服务器进行缓存,缓存静态资源. 一.proxy_cache相关指令说明 1.proxy_cache指令 语法:proxy_cache zone_name; 默认值:none 使用配置段:http,server,location 该指令用于设置哪个缓存区将被使用,zone_name的值为proxy_cache_path指令创建的缓存区名称 2.prox

HTTP缓存相关属性的服务器配置

http://blog.csdn.net/goldlevi/article/details/7705160 之前和网络部门的人一起搭建我们的下载服务器,里面涉及了cache-control/expires的设置,之前每日更新也出现了文件无法下载的情况,最后发现是因为Lastmodified参数的值有变动.这里我把之前整理的与缓存有关系的HTTP头的资料和大家分享一下. 一.     基本知识: 先大概总结一下相关属性的含义. 1.Expires属性 Expires(过期时间)属性是HTTP控制缓