服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

浅析HTTP消息头网页缓存控制以及header常用指令介绍


发布日期:2019年01月23日
 
浅析HTTP消息头网页缓存控制以及header常用指令介绍
本篇文章是对HTTP消息头网页缓存控制以及header常用指令进行了详细的分析介绍需要的朋友参考下

网页的缓存是由HTTP消息头中的“Cachecontrol”来控制的常见的取值有privatenocachemaxagemustrevalidate等默认为private其作用根据不同的重新浏览方式分为以下几种情况
) 打开新窗口
值为privatenocachemustrevalidate那么打开新窗口访问时都会重新访问服务器
而如果指定了maxage值那么在此值内的时间里就不会重新访问服务器例如
Cachecontrol: maxage=(表示当访问此网页后的秒内再次访问不会去服务器)
) 在地址栏回车
值为private或mustrevalidate则只有第一次访问时会访问服务器以后就不再访问
值为nocache那么每次都会访问
值为maxage则在过期之前不会重复访问
) 按后退按扭
值为privatemustrevalidatemaxage则不会重访问
值为nocache则每次都重复访问
) 按刷新按扭
无论为何值都会重复访问
Cachecontrol值为“nocache”时访问此页面不会在Internet临时文章夹留下页面备份
另外通过指定“Expires”值也会影响到缓存例如指定Expires值为一个早已过去的时间那么访问此网时若重复在地址栏按回车那么每次都会重复访问 Expires: Fri Dec :: GMT
比如禁止页面在IE中缓存
http响应消息头部设置
CacheControl = nocache
Pragma=nocache
Expires =
Expires是个好东东如果服务器上的网页经常变化就把它设置为表示立即过期如果一个网页每天凌晨点更新可以把Expires设置为第二天的凌晨
当HTTP服务器指定CacheControl = nocache时浏览器就不会缓存该网页
旧式 HTTP 服务器不能使用 CacheControl 标题
所以为了向后兼容 HTTP 服务器IE使用Pragma:nocache 标题对 HTTP 提供特殊支持
如果客户端通过安全连接 (https://)/与服务器通讯且服务器在响应中返回 Pragma:nocache 标题
则 Internet Explorer不会缓存此响应注意Pragma:nocache 仅当在安全连接中使用时才防止缓存如果在非安全页中使用处理方式与 Expires:相同该页将被缓存但被标记为立即过期

header常用指令
header分为三部分
第一部分为HTTP协议的版本(HTTPVersion)
第二部分为状态代码(Status)
第三部分为原因短语(ReasonPhrase)

复制代码 代码如下:


// fix pages: 用这个header指令来解决URL重写产生的 header
header(HTTP/ OK);

// set header: 页面没找到
header(HTTP/ Not Found);

//页面永久重定向可以告诉搜索引擎更新它们的urls
// set Moved Permanently header (good for redrictions)
// use with location header
header(HTTP/ Moved Permanently);

// 访问受限
header(HTTP/ Forbidden);

// 服务器错误
header(HTTP/ Internal Server Error);

// 重定向到一个新的位置
// redirect to a new location:
header(Location:

延迟一段时间后重定向
// redrict with delay:
header(Refresh: ; url=http://wwwjbnet);
print You will be redirected in seconds;

// 覆盖 XPoweredBy value
// override XPoweredBy: PHP:
header(XPoweredBy: PHP/);
header(XPoweredBy: Brain/b);

// 内容语言 (en = English)
// content language (en = English)
header(Contentlanguage: en);

//最后修改时间(在缓存的时候可以用到)
// last modified (good for caching)
$time = time() ; // or filemtime($fn) etc
header(LastModified: gmdate(D d M Y H:i:s $time) GMT);

// 告诉浏览器要获取的内容还没有更新
// header for telling the browser that the content
// did not get changed
header(HTTP/ Not Modified);

// 设置内容的长度 (缓存的时候可以用到):
// set content length (good for caching):
header(ContentLength: );

// 用来下载文件:
// Headers for an download:
header(ContentType: application/octetstream);
header(ContentDisposition: attachment; filename="examplezip");
header(ContentTransferEncoding: binary);

// 禁止缓存当前文档:
// load the file to send:readfile(examplezip);
// Disable caching of the current document:
header(CacheControl: nocache nostore maxage= mustrevalidate);
header(Expires: Mon Jul :: GMT);

// 设置内容类型:
// Date in the pastheader(Pragma: nocache);
// set content type:
header(ContentType: text/html; charset=iso);
header(ContentType: text/html; charset=utf);
// plain text file
header(ContentType: text/plain);

// JPG picture
header(ContentType: image/jpeg);

// ZIP file
header(ContentType: application/zip);

// PDF file
header(ContentType: application/pdf);

// Audio MPEG (MP) file
header(ContentType: audio/mpeg);

// Flash animation// show sign in box
header(ContentType: application/xshockwaveflash);

// 显示登录对话框可以用来进行HTTP认证
header(HTTP/ Unauthorized);
header(WWWAuthenticate: Basic realm="Top Secret");
print Text that will be displayed if the user hits cancel or ;
print enters wrong login data;

上一篇:Apache中RewriteCond规则参数的详细介绍

下一篇:如何修改和添加Apache的默认站点目录