PHP 浏览器缓存_php缓存引擎

PHP 浏览器缓存_php缓存引擎浏览器缓存动态内容,缓存的内容在浏览器本地,而内容由web服务器生成,任何一方都不可能完成这一系列过程,他们之间有一种沟通机制,这就是缓存协商.如何协商当浏览器向web服务器请求内容时,服务器需要告诉浏览器那些内容可以被缓存,一旦浏览器知道某个内容可以缓存后,下次当浏览器需要请求这个内容时,它便不会直接向服务器请求完整内容,而是询问服务器是否可以使用本地的缓存,服务器在收到浏览器的询问后需要作…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

浏览器缓存动态内容,缓存的内容在浏览器本地,而内容由web服务器生成,任何一方都不可能完成这一系列过程,他们之间有一种沟通机制,这就是缓存协商.

如何协商

当浏览器向web服务器请求内容时,服务器需要告诉浏览器那些内容可以被缓存,一旦浏览器知道某个内容可以缓存后,下次当浏览器需要请求这个内容时,它便不会直接向服务器请求完整内容,而是询问服务器是否可以使用本地的缓存,服务器在收到浏览器的询问后需要作出过段的回应,是允许浏览器使用本地缓存还是将最新内容传回浏览器.
一个test.php

<?php echo time(); ;?>

如用ie浏览器访问这个页面时,返回状态码200,连续多次刷新这个页面,这个页面并没有使用本地缓存,也没有向服务器作出任何表示.打开ie的和这个临时文件目录发发现,该缓存文件的”上次修改时间”为无,浏览器并不知道这个文件的生成时间或上次修改时间,没有过期检查的依据,自然无法使用缓存.

last-modified

当在动态程序添加了last-modified后,浏览器请求了该地址,再次刷新该地址会发现请求参数中携带了一个if-modified-since.这意味着浏览器在询问服务器:“我请求的内容在这个if-modified-since对应的时间之后是否有过更新”,我们需要检查动态内容是否有更新,这部分需要动态程序自己来决定.

<?php $modified_timie=$_SERVER[‘HTTP_IF_MODIFIED_SINCE’]; if(strtotime($modified_time)+3600>time()){ header(“HTTP/1.1 304”); exit(1); }; ?>

另一种协商方法是ETag

它与前面所讲的协商方式非常类似,但它没有采用内容的最后修改时间,而是采用了一串编码来标记内容,称为ETag.一个原则是,如果一个内容的ETag没有变化,那么这个内容也一定没有更新.
这里不讲这个,之后看情况是否补充.

浏览器缓存截止期

Expires告诉浏览器该内容在何时过期,暗示浏览器在该内容过期之前不需要询问服务器,而直接使用本地缓存即可.
对应静态内容,web服务器默认情况下不会开启Expires标记的支持,需要自己去修改配置.

请求页面

ctrl+f5 它使得网页及其所有组件直接向web服务器发送请求,并且不使用缓存协商.

f5 它等同于单机浏览器的刷新按钮,它允许浏览器在请求中附加表的缓存协商,但不允许浏览器直接使用本地缓存,就是说,它能够让last_modified发挥效果,对expires无效.

单击浏览器地址栏的转到按钮或通过超链接 在浏览器输入url后回车等同于这种操作.这几种方式允许浏览器以最少的请求来获取网页的数据,浏览器对所有没有过期的内容直接使用本地缓存.

适用于本地的过期时间

header(“Cache-control: max-age=3600”);
当http响应头同时含有expires和Cache-control时,浏览器会优先考虑Cache-control.

其他

在地址栏回车
值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。
值为no-cache,那么每次都会访问。
值为max-age,则在过期之前不会重复访问

按后退按扭
值为private、must-revalidate、max-age,则不会重访问,
值为no-cache,则每次都重复访问

其他里的主要还是区分浏览器,不同浏览器作用不一样.

欢迎纠正

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184309.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • rplidar 三角测距激光雷达原理

    rplidar 三角测距激光雷达原理买了一个rplidarA2,做工不错,挺漂亮的,更重要的是可以软件启动停止,噪声很小,而且反射检测灵敏度比较高(可以扫描到毛玻璃, 有些差的激光雷达检测不到毛玻璃上的反射)。使用之后感觉很不错。马上就有其他部门的同事过来看热闹,问这问那。于是本人热心讲解了一番。不过感觉他们还是那么萌萌的表情。在此,简单分享一下rplidarA2这种激光雷达的原理和重点技术。rplidarA2

    2022年5月8日
    40
  • git上项目代码拉到本地方法

    git上项目代码拉到本地方法1、先在本地打开workspace文件夹,或者自定义的文件夹,用来保存项目代码的地方。2、然后登陆GitHub账号,点击复制项目路径3、在刚才文件夹下空白处点击鼠标右键,打开Git窗口4、在以下页面中输入命令gitclone加刚才复制的路径,如下图(可能Ctrl+V用不了,可以用右键选择Paste完成复制)5、输入完命令行之后回车就行,等待下载完毕,然后是切换…

    2022年5月29日
    106
  • Java分布式事务

    Java分布式事务分布式事务介绍事务拥有以下四个特性,习惯上被称为ACID特性:

    2022年6月14日
    28
  • csv格式怎么转成excel_比较好一点的Excel转PDF

    csv格式怎么转成excel_比较好一点的Excel转PDF需求说明假如有一个csv文件,打开之后不是想要的编码格式,或者一些数字全都是科学计数法计数。下面你按照下面文档一步一步操作就可以将CSV格式转化成EXCEL格式。1.新建一个excel空文档,如

    2022年8月1日
    7
  • js清除浏览器缓存的几种方法(项目总结)「建议收藏」

    js清除浏览器缓存的几种方法(项目总结)「建议收藏」以前很少关注这方面的问题,直达我们的技术经理找我们说要换框架,为什么换框架呢,因为缓存的问题,原来的项目是用版本号作为刷新的依据的。因为微信公众号上有这样一个机制,使用版本好的话,有时做不到及时刷新,所以就用了vue.js,因为它有这样的功能就是如果某个文件里面的数据改变了,那么vue.js就会把这个文件的名字也相应的改掉,所以缓存里面的东西就用不了了,这样就做到了及时刷新,向后台请求数据。…

    2022年7月18日
    37
  • PHP中exit,exit(0),exit(1),exit(‘0’),exit(‘1’),die,return的区别

    PHP中exit,exit(0),exit(1),exit(‘0’),exit(‘1’),die,return的区别

    2021年10月22日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号