专栏首页陶士涵的菜地[日常] HTTP的缓存

[日常] HTTP的缓存

web缓存:
1.可以自动保存常见文档副本的HTTP设备,当web请求抵达缓存时,如果存在缓存副本,就直接从本地存储设备返回,而不是去源服务器获取

2.缓存命中和未命中

3.HTTP再验证,检测服务器上的内容是否发生了变化,新鲜度检测规则。缓存对副本进行再验证时,会向服务器发送一个小的再验证请求,如果没变化,服务器会返回304 Not Modified,get请求中添加if-modified-since会进行再验证

4.缓存命中率:由缓存提供服务的占比,命中率与缓存大小,用户兴趣相似点,数据的变化,缓存配置等有关,40%的命中率是合理的,对降低整体时延很有好处

5.字节命中率:缓存提供的字节流量在传输流量中的占比,对节省带宽很有利

6.私有缓存,比如web浏览器

7.共有代理缓存,实现层次化的多级缓存很有意义

8.网状缓存,内容路由,对等缓存;有些不是简单的层次结构而是构建复杂的网状关系缓存,这些代理缓存也可以称为内容路由器,ICP和HTCP协议扩展了HTTP的对等缓存兄弟缓存

9.缓存处理步骤:接收请求=>解析请求=>查询本地副本(获取源服务器)=>新鲜度检测=>创建响应=>发送响应=>记录日志

10.文档过期:服务器返回头信息Cache-Control 和Expires,为文档附加过期时间。Cache-Control:max-age=484200是相对时间,保存的秒数,用的更多一些

11.服务器再验证:If开头的条件方法头信息进行再验证
    If-Modified-Since:日期
    If-None-Match:实体标签再验证

12.
打开新窗口   如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器.
在地址栏回车  如果值为private或must-revalidate,则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
按后退按扭   如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问.
按刷新按扭   无论为何值,都会重复访问.
Cache-Control:no-cache就表示不缓存
13.
apache的配置:
3.注释掉apache配置文件中的:
#ExpiresDefault A0
#Header set Cache-Control "private, must-revalidate, max-age=0, proxy-revalidate, no-transform"
#Header set Pragma "no-cache"

ExpiresActive On
ExpiresDefault "access plus 300 seconds"

14.php文件中的响应头:
header('Cache-Control: max-age=' . $this->expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $this->expires) . ' GMT');
header('Pragma: '); // unset Pragma header

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [日常] DNS解析概述

    陶士涵
  • [android] 数据的异步加载和图片保存

    android.permission.MOUNT_UNMOUNT_FILESYSTEMS

    陶士涵
  • [日常] nginx与HTTP cache

    ============================================================= 2017年12月11日 记录:

    陶士涵
  • http缓存与离线缓存

    一、http协议实现缓存 1. 缓存头部 通用缓存、条件缓存、缓存控制三大类 头部名称 说明 请求/响应 通用缓存头部 控制客户端是否向服务器发送请求...

    sam dragon
  • Java缓存深入理解

    对于缓存大家都不会陌生,但如何正确和合理的使用缓存还是需要一定的思考,本文将基于Java技术栈对缓存做一个相对详细的介绍,内容分为基本概念、本地缓存、远程缓存和...

    用户1216676
  • 反向代理的攻击面 (下)

    让我们接着上节的内容,继续探讨。建议读者先阅读第一部分,这将有助于理解本节的内容。

    随心助手
  • WEB缓存探究

    由于项目越来越大,即使了使用代码压缩工具减少文件大小,js文件还是不可避免的越变越大。而对于用户来说每次重新下载都有可能会消耗大量时间,让我们的首屏展示有较长时...

    疯狂的技术宅
  • Spring Cache For Redis.

    一、概述 缓存(Caching)可以存储经常会用到的信息,这样每次需要的时候,这些信息都是立即可用的。      常用的缓存数据库: Redis   使用内存...

    JMCui
  • Redis 缓存 + Spring 的集成示例 (不错的bolg)

    http://blog.csdn.net/defonds/article/details/48716161  

    bear_fish
  • 聊聊MyBatis缓存机制

    前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之...

    美团技术团队

扫码关注云+社区

领取腾讯云代金券