转自CSDN ouyang-web之路

原文链接:https://blog.csdn.net/cangqiong_xiamen/article/details/90405555

一.浏览器的缓存

status 为 200

Size为 from cache

200 from cache: 直接从本地缓存中获取响应,最快速,最省流量, 因为根本没有向服务器发送请求
304 Not Modified:协商缓存,浏览器在本地没有生命中的情况下请求头中发送一定的效验数据到服务端,如果服务端数据没有改变浏览器从本地缓存响应,返回304
快速,发送的数据很少,只返回一些基本的响应头信息,数据量很小,不发送实际响应体
浏览器向服务器缓存是否更新了,是否还能继续用
200 OK: 以上两种缓存全都失败,服务器返回完整响应。没有用到缓存,相对最慢。
浏览器认为本地缓存可以使用,是不会去请求服务端的

二.获取请求头
Curl -I 参数I为只获取请求头信息
[root@localhost ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 277
Content-Type: text/html
Date: Mon, 20 May 2019 05:28:13 GMT
Etag: “575e1f72-115”
Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT
Pragma: no-cache
Server: bfe/1.0.8.18

Cache-Control: 运用Cache-Control告知浏览器缓存过期的时间间隔而不是时刻,即使具体时间不一致,也不影响缓存的管理
no-store 禁止浏览器缓存响应
no-cache 不允许直接使用本地缓存,先发起请求和服务器协商
max-age=delta-seconds: 告知浏览器该响应本地缓存有效的最长期限,以秒为单位
Last-Modified: 通知浏览器资源的最后修改时间
Last-Modified: Mon,28 Sep 2015 08:06:43 GMT
Pragma: HTTP1.0时代的遗留产物,该字段被设置为no-cache时,会告知浏览器禁用本地缓存,即每次都向服务器发送请求
ETag: HTTP1.1推出的,文件的指纹标识符,如果文件内容修改,指纹会改变
Etag:“78437822c-6739”
If-Modified-Since: 得到资源的最后修改时间后,会将这个信息通过If-Modified-Since提交到服务器做检查,如果没有修改,返回304状态码
Connection:keep-alive 表示是否需要持久连接(HTTP 1.1默认进行持久连接) Keep-Alive表示持久连接

三.使用请求头来处理浏览器缓存

实现效果: 用户请求时浏览器缓存一个小时,一个小时后文件获取
一个小时内文件,浏览器使用本地缓存

<?php ini_set('date.timezone','Asia/Shanghai');
//获取浏览器最后缓存修改的时间
$since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : 0;
$lifetime = 3600;
//判断文件是否过期
if ($since && (strtotime($since) + $lifetime > time()))
{
   header('HTTP/1.1 304 Not Modified'); //使用本地缓存
   exit;
}
//告诉浏览器资源最新修改时间
header('Last-Modified:'.gmdate('D, d M Y H:i:s',time()).'GMT');
echo time();

http请求头缓存实现的更多相关文章

  1. Http请求头缓存设置方法

    1.直接在.aspx页面中设置最直接的,在.aspx页面中添加一行如下代码: <%@ OutputCache Duration="3600" VaryByParam=&quo ...

  2. Retrofit2 + OkHttp3设置Http请求头(Headers)方法汇总

    在构建网络层时会遇到一个问题就是要手动配置Http请求的Headers,写入缓存Cookie,自定义的User-Agent等参数,但是对于有几十个接口的网络层,我才不想用注解配置Headers,目前网 ...

  3. Servlet请求头response应用简单案例

    Servlet请求头response应用简单案例:访问AServlet重定向到BServlet,5秒后跳到CServlet,并显示图片: AServlet package cn.yzu; import ...

  4. HTTP请求头详解

    http://blog.csdn.net/kfanning/article/details/6062118 HTTP由两部分组成:请求和响应.当你在Web浏览器中输入一个URL时,浏览 器将根据你的要 ...

  5. HTTP协议及其请求头分析

    HTTP协议及其请求头分析 HTTP协议及其请求头分析   众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP.Archie Gopher等是建立在TCP/IP协议之上的应用 ...

  6. [转]HTTP协议及其请求头分析

      众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP.Archie Gopher等是建立在TCP/IP协议之上的应用层协议,不同的协议对应着不同的应用.  WWW服务器使用 ...

  7. Android系列之网络(二)----HTTP请求头与响应头

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. HTTP响应头和请求头信息对照表

    HTTP请求头提供了关于请求,响应或者其他的发送实体的信息.HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可用 ...

  9. HTTP请求头详解【转】

    http://blog.csdn.net/kfanning/article/details/6062118 HTTP由两部分组成:请求和响应.当你在Web浏览器中输入一个URL时,浏览器将根据你的要求 ...

随机推荐

  1. 图数据库ubentu环境neo4j安装

    1.下载进入官网下载https://neo4j.com/download-center/#releases 2.设置依赖仓库 wget -O - https://debian.neo4j.org/ne ...

  2. 因子分析和PCA总结

    因子分析和PCA 定义 因子分析就是数据降维工具.从一组相关变量中删除冗余或重复,把相关的变量放在一个因子中,实在不相关的因子有可能被删掉.用一组较小的“派生”变量表示相关变量,这个派生就是新的因子. ...

  3. 销售de经典语录

    [销售的境界] 1.顾客要的不是便宜,而是感觉上占了便宜: 2.不要与顾客争论价格,要与顾客讨论价值: 3.没有不对的客户,只有不够好的服务: 4.卖什么不重要,重要的是怎么卖: 5.没有最好的产品, ...

  4. Coursera机器学习——Recommender System测验

    第一题本应该是基础题,考察Cost Function不同形式的表示方法,但却难住了我,说明基本概念掌握不够到位. 1. 在求和的部分,有两种可能,一种是(i,j)同时求和,即∑(i,j):r(i,j) ...

  5. ubuntu下查询网络的常用命令

    1.查看无线路由器(网关)的IP地址 在terminal中输入如下命令,即可查询到当前使用的路由器的IP地址(我电脑是连着一个无线网络还有一个DSL连接): route|grep -i default ...

  6. 基于libcurl的GET与POST(HTTP1.1)

    #include <stdio.h> #include <curl/curl.h> bool getUrl(char *filename) { CURL *curl; CURL ...

  7. 用IMX6开发板创建Android模拟器

    基于迅为IMX6开发板 在 AndroidStudio 中,单击“Tools”->“Android”->“AVD Manager”选项.弹出 如下对话框,点击红色方框中的按钮. 弹出如下所 ...

  8. 干货 | 京东云应用负载均衡(ALB)多功能实操

    应用负载均衡(Application Load Balancer,简称ALB)是京东云自主研发的一款七层负载均衡产品,主要面向HTTP和HTTPS流量的WEB应用程序,提供灵活的功能配置.应用负载均衡 ...

  9. 第2章 Innodb 存储引擎

    一.InnoDB 体系架构 1.1后台线程 master thread:刷新内存中的数据到磁盘 io thread:处理 IO 请求,AIO purge thread:清理undo 页的回收 page ...

  10. Spring的设计理念和整体架构

    1.Spring的各个子项目 Spring Framework(Core):这是我们熟知的Spring项目的核心.Spring Framework(Core)中包含了一系列Ioc容器的设计,提供了依赖 ...