缓存可以加快Web请求的速度,在Web应用中,缓存有多种, 包括:

浏览器端缓存
中间缓存服务器端缓存
Web服务器端缓存
以浏览器端缓存为例,浏览器将服务端响应的页面、图片、样式或是JS文件等保存在浏览器本地, 下次访问的时候直接从本地查找就可以显示, 好处是可以加快页面的展现速度,提高用户体验;坏处就是缓存的内容不是最新的, 所以在某些场景下需要禁用缓存。

HTML协议中对缓存的控制

HTTP 协议中使用头信息控制缓存信息, 包括浏览器端,中间缓存服务器端,Web服务器端。
HTTP协议中用于缓存信息头关键字包括:

Cache-Control , HTTP 1.1 版本使用
Pragma: HTTP 1.0 版本使用。
last-Modified  最近修改的时间
Expires  过期时间

  • Pragma

Pragma可以设置的值有:

Pragma: 浏览器和缓存服务器都不缓存缓存
no-cache: 浏览器和缓存服务器都不缓存, 需要结合Expires为0.

  • Cache-Control

可以设置的值有:

no-cache : 浏览器和缓存服务器都不缓存
public 浏览器和缓存服务器都可缓存
no-store 请求和响应信息都不应该存储在对方的磁盘系统中
must-revalidate, 对于客户机的每次请求, 代理服务器旭向服务器验证缓存是否过时。
HTML协议头信息的定义
HTML协议中使用标签定义头信息, 在该信息里使用http-equiv 和 contect 定义键和值, 比如文档类型的头信息 Content-Type:text/html , 这里的键是Content-Type, 其对应的值是text/html, 所以使用 meta 定义如下:

<meta http-equiv="Content-Type" contect="text/html">

 HTML页面如何禁用缓存

综合以上, 在一个HTML 页面中禁用缓存的方式是在标签内加入如下头信息定义:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

补充

HTML中meta 的作用

meta 翻译一下是元数据。
在html 中meta 用来在HTML文档中模拟 HTTP协议的响应头报文。
标签定义在 中。
meta的属性有两种:

name: 用于描述网页, 对应Content, 用处是便于搜索引擎查找、分类。最重要的属性description 和keywords。
http-equiv :

 meta name

Generator 生成工具
keywords 搜索引擎页面关键字
description 站点说明
Author 作者
Robots:
all 文件被检索,页面上的链接可以被查询
none 文件不被检索,链接不可以被查询
index 文件将被检索
follow 页面上的链接可以被查询
noindex 文件不被检索 页面上的链接可以被查询
nofollow 文件不被检索 页面上的链接可以被查询
http-equiv
Content-Type 内容类型

<meta http-equiv="Content-Type" contect="text/html";charset=UTF-8">

Content-Language 语言

<meta http-equiv="Content-Language" contect="zh-CN">

Refresh 指定时间页面跳转

<meta http-equiv="Refresh" contect="n;url=http://yourlink">

Pragma 缓存
set-cookie Cookie 过期设置

<meta http-equiv="set-cookie" contect="Mon,12 May 2001 00:20:00 GMT">

Pics-label 网页等级评定

<meta http-equiv="Pics-label" contect="">

页面必须以独立页面显示,防止在frame中嵌入使用

<meta http-equiv="windows-Target" contect="_top">

Page-Enter , Page-Exit 设置页面进入和离开的特殊效果
JSP 设置
如果使用的JSP页面,也可以通过response设置响应头信息, 代理类似:

response.setHeader("Cache-Control", "public"); 
response.setHeader("Pragma", "Pragma");

标签: none

添加新评论