php笔记07:http响应详解(禁用缓存设置和文件下载)

演示如何通过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文件,出现了以下效果:

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

 

来自为知笔记(Wiz)

时间: 2024-10-15 10:59:47

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

hadoop 学习笔记:mapreduce框架详解

hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我 学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能是我做技术研究的 思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习 hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不

Dockerfile常用指令详解&镜像缓存特性

Dockerfile简介 Dockerfile 是Docker中用于定义镜像自动化构建流程的配置文件.在Dockerfile中,包含了构建镜像过程中需要执行的命令和其他操作.通过Dockerfile可以更加清晰,明确的给定Docker镜像的制作过程,由于仅是简单,小体积的文件,在网络等介质中传递的速度快,能够更快的实现容器迁移和集群部署.Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. 相对于提交容器修改在进行镜像迁

UITabBarController详解(介绍和设置)

[objc] view plaincopy - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization af

笔记整理--HTTP Header 详解

HTTP Header 详解 2013/09/21 | 分类: IT技术 | 0 条评论 | 标签: HTTP 分享到:36 原文出处: zcmhi HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应.就整个网络资源传输而言,包括message-header和message-body两部分.首先传递message- header,即http header消息.htt

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

1.MyBatis-config.xml详解 一个完整的配置文件如下所示 <configuration> <!-- <properties resource="jdbc.properties"/> --> <properties> <property name="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/> <prope

Linux学习笔记——用户及权限详解

用户及权限详解    用户.组.权限 安全上下文(secure context): 权限: r   w   x  文件: r:可读,可以使用类似cat等命令查看文件内容: w:可写,可以编辑或删除此文件: X:可执行,exacutable,可以命令提示符下当作命令提交给内核运行:  目录: r:可以对此目录执行ls以列出内部的所有文件: w:可以在此目录创建文件: x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息: rwx: r--:只读 r-x:读和执行 ---:无权限

CSS学习笔记(9)--详解CSS中:nth-child的用法

详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是":nth-child". 下面我将用几个典型的实例来给大家讲解:nth-child的实际用途: Tips:还用低版本的IE浏览器的哥们请绕过! :nth-child(2)选取第几个标签,"2可以是你想要的数字" .demo01 li:nth-child(2){background:#090} :nth-child(n

【笔记——Hibernate】Hibernate详解

Hibernate 三大框架之一,他的任务是和数据库打交道,以下是我对它的认识,以及详解. 注意:以下的介绍是针对 hibernate-release-4.3.7.Final 的. 目录解析: hibernate-release-4.3.7.Final -documentation 里面都是些文档 -devguide 开发指南 -javadocs api -manual 几乎所有的介绍都在里面了 -quickstart  简单的介绍以下Hibernate的用法功能 -topical 类似其他介绍

Linux学习笔记—— 用户管理命令详解

 用户管理命令详解  用户管理: useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage 添加用户: useradd [options] USERNAME    -u (UID)   手动指定UID -g (GID)  (基本组) -G, ...     (附加组) 可以有多个,彼此之间用,号隔开 -c "COMMENT"         注释信息     -d /path/to/somedirectory  指定家目录 -s