zoukankan      html  css  js  c++  java
  • PHP笔记07:http响应详解(禁用缓存设置和文件下载)

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

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

    1 <?php
    2    echo "hello!cache";
    3  ?>

    在浏览器中输入地址访问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文件还是在...htdocshttp文件夹处,其中代码如下:
    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文件,出现了以下效果:
    点击打开下载好的图片如下,显示完好:
     

  • 相关阅读:
    海康威视复赛题
    [转] A*寻路算法C++简单实现
    [转]程序进行性能分析工具gprof使用入门
    [转]KMP 算法
    boolalpha的用法和作用
    python与数据科学有多少“暧昧情事”?14个Q&A告诉你
    Python来袭,教你用Neo4j构建“复联4”人物关系图谱!
    深入理解BERT Transformer ,不仅仅是注意力机制
    Python开发者年度调研,结果出乎意料!
    R和Python,对抗or融合?
  • 原文地址:https://www.cnblogs.com/hebao0514/p/fc2316538cf7860c025e8b0c553f019d.html
Copyright © 2011-2022 走看看