演示如何通过Http响应控制页面缓存,在默认情况下,浏览器是会缓存页面的
1.禁用缓存设置

(1).我在...\htdocs\http文件夹,写一个cache.php文件如下:

 <?php
echo "hello!cache";
?>

在浏览器中输入地址访问cache.php这个文件,结果如下:

抓包如下:

 
 

(2)接下来,我们把光标放在地址栏,然后按一下回车键如下:

抓包如下:我根据数据包知道,一旦第一次刷新获取过这个页面,浏览器默认都会缓存这个页面,那么下次再次访问,就在缓存中取这个页面,给用户。

 

(3).接下来我们来修改这个cache.php文件,如下:

  1. <?php
  2. //通过header来禁止缓存(ajax)
  3. header("Expries: -1");
  4. header("Cache-Control:no_cache");
  5. header("Pragma:no-cache");
  6. echo "hello!cache";
  7. ?>
下面实践一下,验证是不是阻止缓存了,如下:

 
2.文件下载
这里我们定义一个fileDown.php文件:
这个php文件被访问的逻辑图如下:

上面说的fileDown.php文件还是在...\htdocs\http文件夹处,其中代码如下:
  1. <?php
  2. //演示一个图片
  3. $file_name ="B01.jpg";
  4. //打开文件
  5. if(!file_exists($file_name)){
  6. echo "文件不存在";
  7. return;
  8. }
  9. $fp = fopen($file_name,"r");
  10. //获取下载文件的大小
  11. $file_size= filesize($file_name);
  12. //返回的是文件的形式
  13. header("Content-type: application/octet-stream");
  14. //以字节大小进行返回
  15. header("Accept-Ranges:bytes");
  16. //返回文件大小
  17. header("Accept-Length:$file_size");
  18. //这里对应客户端的弹出对话框,对应的文件名
  19. header("Content-Disposition:attachment; filename=".$file_name);
  20. $buffer =1024;
  21. //向客户端回送数据
  22. //这句话用于判断文件是否结束
  23. while(!feof($fp)){
  24. $file_data = fread($fp,$buffer);
  25. //把部分数据回送到浏览器
  26. echo $file_data;
  27. }
  28. fclose($fp);
  29. ?>
在浏览器输入地址访问fileDown.php文件,出现了以下效果:

点击打开下载好的图片如下,显示完好:

php笔记07:http响应详解(禁用缓存设置和文件下载)的更多相关文章

  1. 【山外笔记-数据库】Memcached详解教程

    本文打印版文档下载地址 [山外笔记-数据库]Memcached详解教程-打印版.pdf 一.Memcached数据库概述 1.Memcached简介 (1)Memcached是一个自由开源的,高性能, ...

  2. IP2——IP地址和子网划分学习笔记之《子网掩码详解》

    2018-05-04 16:21:21   在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...

  3. Cloud Alibabab笔记问世,全网详解仅此一份手慢无

    转: Cloud Alibabab笔记问世,全网详解仅此一份手慢无 什么是Spring cloud alibaba Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案, ...

  4. 详解浏览器缓存机制与Apache设置缓存

    一.详解浏览器缓存机制 对于,如何说明缓存机制,在网络上找到了两张图,个人认为思路是比较清晰的.总结时,上图. 这里需要注意的有两点: 1.Last-Modified.Etag是响应头里的数据 2.I ...

  5. 浏览器 HTTP 协议缓存机制详解--网络缓存决策机制流程图

    1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Ref ...

  6. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  7. 笔记整理--HTTP Header 详解

    HTTP Header 详解 2013/09/21 | 分类: IT技术 | 0 条评论 | 标签: HTTP 分享到:36 原文出处: zcmhi HTTP(HyperTextTransferPro ...

  8. MyBatis学习笔记2--配置环境详解

    1.MyBatis-config.xml详解 一个完整的配置文件如下所示 <configuration> <!-- <properties resource="jdb ...

  9. 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

    这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...

随机推荐

  1. asp.net web 开发登录相关操作的控件LoginName、LoginStatus和LoginView控件使用详解

    http://book.51cto.com/art/200909/154039.htm http://book.51cto.com/art/200909/154041.htm ASP.NET提供了一套 ...

  2. mapreduce: InputFormat详解 -- RecordReader篇

    InputFormat是MapReduce中一个很常用的概念,它在程序的运行中到底起到了什么作用呢? InputFormat其实是一个接口,包含了两个方法: public interface Inpu ...

  3. Linux Kernel本地权限提升漏洞

    漏洞版本: Linux Kernel 漏洞描述: Bugtraq ID:64291 CVE ID:CVE-2013-6368 Linux Kernel是一款开源的操作系统. 如果用户空间提供的vapi ...

  4. 深入理解OAuth2.0

    1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...

  5. 【JS】Beginner8:Objects

    1.Real life object:propertiese & abilities JS object:a collection of named properties & meth ...

  6. Clean Code–Chapter 7 Error Handling

    Error handling is important, but if it obscures logic, it's wrong. Use Exceptions Rather Than Return ...

  7. Windows 服务 创建 和 安装 -摘自网络

    What a Windows Service is Enables you to create long-running executable applications that run in the ...

  8. 5 crucial optimizations for SSD usage in Ubuntu Linux

    I bought my first SSD more than 5 years ago (late 2007), for my white MacBook Core2Duo 2.0 Ghz. It m ...

  9. HTTP的升级产品:SPDY

    一.什么是SPDY? SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 .目前已经被用于Google Chrome浏览器中来访问Google的SSL加密服务.SPDY当前并不是一个标 ...

  10. Oracle数据库启动流程

    1.oracle也可以通过命令的方式启动, (1)oracle启动流程-windows下 1) lsnrctl start (启动监听) 2)oradim -startup -sid 数据库实例名 2 ...