• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 浏览器要怎么样才能触发强缓存命中和协商缓存?

浏览器要怎么样才能触发强缓存命中和协商缓存?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了怎么才能用谷歌浏览器,怎样才能用谷歌浏览器,浏览器最大化才能输入,浏览器半天才能打开,怎么才能用ie浏览器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:浏览器要怎么样才能触发强缓存命中和协商缓存?
描述:

在伯乐在线上看到一篇文章:浏览器缓存知识小结及应用 ,连接:http://web.jobbole.com/84888/
博主总结到:
浏览器缓存基本认识分为强缓存和协商缓存:
1)浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器;

2)当强缓存没有命中的时候,浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资源;

3)强缓存与协商缓存的共同点是:如果命中,都是从客户端缓存中加载资源,而不是从服务器加载资源数据;区别是:强缓存不发请求到服务器,协商缓存会发请求到服务器。

4)当协商缓存也没有命中的时候,浏览器直接从服务器加载资源数据。

强缓存:(200 from cache)
协商缓存:(304 not modified)

但是我去百度首页看了下,发现并不是这样的,当请求响应中cache-control还没有过期时,并没有命中强缓存,而是命中协商混存。如下图,截得百度的:

这资源没有过期吧?谁能给解释下为啥没有命中强缓存啊?或者我自己哪里理解错了,跪谢!


解决方案1:

首先网上的文章错中复杂,我没看你的那篇博文,但我发现你总结的是错的。

在开始之前你应该去看看http状态码200和304分别代表什么,前者是正常从服务器加载资源(也就是无缓存),后者是发送一个etag和last_modified到服务器,验证是否使用客户端缓存,然后服务器返回304代码(也就是说304就是客户端缓存)

所以实验结果是正确的。

返回再看看就知道了

解决方案2:

同学我觉得你的理解没有问题,只是文章没有看到最后浏览器行为对缓存的影响当f5刷新网页时,跳过强缓存,但是会检查协商缓存。同学是不是忽略了这一点。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浏览器要怎么样才能触发强缓存命中和协商缓存?

相关文章

  • 2017-06-07 py2exe069+pymssql102+python254编译exe的错误
  • 2017-06-07 程序面试算法问题
  • 2017-06-07 有人在leetcode上刷过题吗?有一个操作上的弱弱的问题
  • 2017-06-07 centos64运行laravel50一直加载不出来
  • 2017-06-07 专家诊断系统中Drools规则编写问题
  • 2017-06-07 为什么通过telnet向memcached存入一个key之后用memcachedclient取出来的是null?
  • 2017-06-07 (python)uwsgi如何配置启动参数,使并发数尽可能高?
  • 2017-06-07 iOS:我获取挂在七牛上的plist文件中的爸版本号,有的时候获取的结果不一样
  • 2017-06-07 跪求s-matchjar的使用方法
  • 2017-06-07 python属性访问和方法调用是不是不一样

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 怎样在IntelliJIDEA中让Java程序读取txt文件作为输入
    • B/S应用如何使用指纹机认证
    • 求助,关于调用matplotlib查看器的问题
    • golang后端框架源码
    • (redis)假如说一个产品n个评论,直接存放到mongo的一个document,会不会有问题?
    • laravel路由有query_string的问题
    • (ruby)有什么基于JavaScript写的Python的linter吗?
    • ubuntuubuntu下phpredis扩展无法加载成功
    • (shell)PHPcentos上file_get_contents获取本机上的域名会返回false其他外网域名又能正常获取
    • 使用homestead配置laravel开发环境,但是设置映射文件夹的时候不是我在配置文件里面设置的位置

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有