響應的信息
~~~
HTTP/1.1 200 OK /狀態碼 200請求成功
Date: Sun, 16 Oct 2016 06:49:21 GMT 【告訴瀏覽器,請求頁面的時間】
Server: Apache/2.4.10 (Win32) OpenSSL/0.9.8zb PHP/5.3.29 【告訴瀏覽器,服務器的情況】
X-Powered-By: PHP/5.3.29
Content-Length: 145 【返回的內容長度】
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html 【文檔類型】
~~~
## 狀態碼說明
100 接收成功
200 接收成功,完成整個過程
300
302 資源已經移動到新地址
400 客戶端錯誤
500 服務器端錯誤
**要改變響應的頭的內容,就在header里面寫內容**
header 可以向Http響應里面寫東西,改變一個回應的頭,狀態碼302
header("Location:新頁面");
~~~
HTTP/1.1 302 Found
Date: Sun, 16 Oct 2016 08:24:55 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/0.9.8zb PHP/5.3.29
X-Powered-By: PHP/5.3.29
Location: index.php
Content-Length: 22
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
~~~
看到location后,請求回到瀏覽器,跳轉是從瀏覽器發生的

404該頁面不存在
304資源沒有修改,無需再存取
第二次打開頁面,圖片會從緩存里面取,所以圖片的信息是304,服務器看到請求的資源的修改時間和實際資源的時間一致,就不會返回信息,而是從緩存中讀取。
~~~
HTTP/1.1 304 Not Modified
Server: bfe/1.0.8.18
Date: Sun, 16 Oct 2016 08:50:21 GMT
Connection: keep-alive
ETag: "1ec5-502264e2ae4c0"
Expires: Wed, 14 Oct 2026 08:50:21 GMT
Cache-Control: max-age=315360000
~~~


### 延時跳轉
~~~
header("Refresh:3;url=http://www.baidu.com");
~~~
## 禁用緩存設置
通過http響應控制頁面緩存,默認情況瀏覽器會緩存頁面,不同瀏覽器緩存時間不一樣
~~~
header("Expires:-1");
header("Cahce-Control:no_cache");
header("Pragma:no-cache");
echo "hello,cache";
~~~
## 文件下載
文件基本知識
文件類型:
a. 文本文件——記事本里面的
b. 二進制文件 圖片,視頻,音頻
步驟:
1. 判斷文件是否存在
2. 打開文件 $fp=$fopen("a.txt","r+"); //r+讀寫方式,$fp是指向這個文件的指針
3. 打開方式
4. 讀到內存里面 fread($fp);
5. 操作,添加,修改
6.關閉文件 fclose($fp);

**字符轉碼**
`$file_name=iconv("utf-8","gb2312",$file_name);`
~~~
$file_name="a.jpg";
$file_name=iconv("utf-8","gb2312",$file_name);
$file_path="../images/".$file_name;
//1.打開文件
if(!file_exists($file_name)){
echo "文件不存在";
return;
}
$fp=fopen($file_name,"r");
//獲取文件大小
$file_size=filesize($file_name);
//下載文件需要的頭header
//返回的文件
header("Content-type:application/octet-stream");
//按照字節返回
header("Accept=Ranges:bytes");
//返回文件大小
header("Accept-Length:$file_size");
//返回的文件名
header("Content-Disposition:attachment;filename=".$file_name);
//向客戶端會送數據
$buffer=1024;
//計數器統計下載了多少
$file_count=0;
while(!feof($fp) && $file_size-$file_count>0){
$file_data=fread($fp,$buffer);
$file_count+=$buffer;
//把部分數據會送給瀏覽器
echo $file_data;
}
//關閉文件
fclose($fp);
~~~