麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

php控制客戶端緩存

2020-03-22 20:09:41
字體:
供稿:網(wǎng)友
  • 1.關(guān)于HTTP消息

    詳見: http://www.runoob.com/http/http-messages.html
    http消息中請求頭是瀏覽器要告訴服務器的信息,而響應頭是服務器要告訴客戶端的信息。這些頭的定義是HTTP協(xié)議定義好的,客戶端和服務器通過解析消息頭中信息來完成各自的工作。比如:請求頭中Accept-Language:zh-CN,zh;q=0.8 告訴服務器客戶端能接收的語言。

    2.響應頭Cache-Control控制緩存

    這里寫圖片描述
    Cache-Control 一個用于定義緩存指令的通用頭標。

    緩存策略:
    有用的 Cache-Control響應頭信息包括:

    max-age=[秒] — 執(zhí)行緩存被認為是最新的最長時間。類似于過期時間,這個參數(shù)是基于請求時間的相對時間間隔,而不是絕對過期時間,[秒]是一個數(shù)字,單位是秒:從請求時間開始到過期時間之間的秒數(shù)。s-maxage=[秒] — 類似于max-age屬性,除了他應用于共享(如:代理服務器)緩存public — 標記認證內(nèi)容也可以被緩存,一般來說: 經(jīng)過HTTP認證才能訪問的內(nèi)容,輸出是自動不可以緩存的;private在服務器設(shè)置了private比如:Cache-Control:private, max-age=60的情況下,表示只有用戶的瀏覽器可以緩存private響應,不允許任何中繼Web代理對其進行緩存 – 例如,用戶瀏覽器可以緩存包含用戶私人信息的HTML網(wǎng)頁,但是CDN不能緩存。no-cache — 強制每次請求直接發(fā)送給源服務器,而不經(jīng)過本地緩存版本的校驗。這對于需要確認認證應用很有用(可以和public結(jié)合使用),或者嚴格要求使用最新數(shù)據(jù)的應用(不惜犧牲使用緩存的所有好處);no-store — 不做緩存must-revalidate — 告訴緩存必須遵循所有你給予副本的新鮮度。使用緩存的時候每次必須發(fā)送請求到服務器校驗,比如通過If-Modified-Since或If-None-Matchproxy-revalidate — 和 must-revalidate類似,除了他只對緩存代理服務器起作用,舉例:Cache-Control: max-age=3600, must-revalidate
    <?phpheader('Content-type:text/html;charset=utf-8');//用Cache-Control告訴瀏覽器有效期 5秒header('Cache-Control:max-age=5');//等同于Cache-Control:public, max-age=5$curr_time = date('Y-m-d H:i:s');echo '服務器時間:'.$curr_time;?><!DOCTYPE html><html><head><meta charset='utf-8'><title>Cache</title></head><body><br>    Time:<?php  echo $curr_time; ?><br>    <a href='cache_sample.php'>刷新時間</a></body></html>

    這里寫圖片描述

    3.響應頭Expires控制緩存
    <?phpheader('Content-type:text/html;charset=utf-8');//用Cache-Control告訴瀏覽器有效期 5秒// header('Cache-Control:max-age=5');//等同于Cache-Control:public, max-age=5//設(shè)置10秒的有效期,時間格式是GMT//時間是當前服務器時間 + 10秒$expires = gmdate('D, d M Y H:i:s', time() + 10) . ' GMT'; header('Expires:$expires');$curr_time = date('Y-m-d H:i:s');echo '服務器時間:'.$curr_time;?><!DOCTYPE html><html><head><meta charset='utf-8'><title>Cache</title></head><body><br>    Time:<?php  echo $curr_time; ?><br>    <a href='cache_sample.php'>刷新時間</a></body></html>

    這里寫圖片描述
    expires的弊端是有效期以服務器時間設(shè)置,如果客戶端的時間和服務端時間有一定的時間差,緩存的控制就有問題了,所以還是建議使用Cache-Control好!

    上面的代碼如果同時設(shè)置了

    header('Cache-Control:max-age=5');$expires = gmdate('D, d M Y H:i:s', time() + 10) . ' GMT'; //這個設(shè)置將無效header('Expires:$expires');

    Cache-Control(支持) 和 expires 同時設(shè)置有效期,以 Cache-Control設(shè)置的有效期為準

    4.通過HTTP 304: Not Modified 使用緩存

    (1)響應頭包含 Expires, max-age的話,“打開新窗口”、“地址欄輸入url回車”這些瀏覽器行為不會使瀏覽器在Expires, max-age設(shè)置的有效期時間內(nèi)去訪問服務器,而是在緩存中去獲取內(nèi)容,但是”刷新’”或”F5” 例外。
    (2)訪問服務器,根據(jù)服務器響應來獲取內(nèi)容。這種情況發(fā)生在設(shè)置了Cache-Control:no-cache 是否使用緩存必須要通過服務器驗證,或者是設(shè)置了 Expires,max-age但瀏覽器行為是“刷新”或“F5”時候。’Last-Modified’、’ETag’、’must-revalidate’ 等有些特殊,不直接受瀏覽器行為影響,它們必須訪問服務器后,再由服務器判斷是直接發(fā)送新的資源,還是發(fā)送一個304 Not Modfied讓瀏覽器使用緩存中的資源。

    注意: CTRL+ F5是強制刷新。

    這里寫圖片描述
    ETag全稱Entity Tag,用來標識一個資源。在具體的實現(xiàn)中,ETag可以是資源的hash值,也可以是一個內(nèi)部維護的版本號。但不管怎樣,ETag應該能反映出資源內(nèi)容的變化,這是Http緩存可以正常工作的基礎(chǔ)。Last-Modified的原理其實和ETag差不多,Last-Modified通過時間來標識資源。通過這樣的方式可以不必每次都獲取全部的資源達到更新的目的,能極大的節(jié)省服務器的開銷,更有利于搜素引擎的抓取。

    <?phpheader('Content-type:text/html;charset=utf-8');header('Cache-Control:no-cache');//響應頭Last-Modified$lastmodified = filemtime('./cache.php');$lastmodifiedGMT = gmdate('D, d M Y H:i:s',$lastmodified). ' GMT';header('Last-Modified:$lastmodifiedGMT');//響應頭ETag$etag = md5_file('./cache.php');header('ETag:$etag');if (@$_SERVER['HTTP_IF_MODIFIED_SINCE'] == $lastmodifiedGMT ||    @trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {        header('HTTP/1.1 304 Not Modified');        exit;    }//返回304后,下面的內(nèi)容不會向瀏覽器返回,而瀏覽器會使用之前的緩存   $curr_time = date('Y-m-d H:i:s');echo '服務器時間:'.$curr_time;?><!DOCTYPE html><html><head><meta charset='utf-8'><title>Cache</title></head><body><br>    Time:<?php  echo $curr_time; ?><br>    <a href='cache_sample.php'>刷新時間</a></body></html>

    這里寫圖片描述

    引用:
    [1]寫給后端程序員的HTTP緩存原理介紹
    [2]面向站長和網(wǎng)站管理員的Web緩存加速指南[翻譯]
    [3]緩存Cache詳解

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 免费视频a| 一级外国毛片 | 欧美成年人视频在线观看 | 黄在线免费 | 国产精品久久久久久久久久东京 | av电影直播 | 国产视频在线免费观看 | 看全色黄大色黄大片女图片 | 精品1| 欧美成人免费在线视频 | 末成年女av片一区二区 | 国产免费网站视频 | 舌头伸进添的我好爽高潮网站 | 亚洲第一成人在线 | 久久影院国产精品 | 欧美成在人线a免费 | 美女黄色影院 | 国产免费久久久久 | 美女污污视频在线观看 | 国产一国产一级毛片视频在线 | 久久久久久久久久亚洲 | 午夜精品久久久久久久爽 | 亚洲精品成人在线视频 | 亚洲国产一区二区三区 | 毛片免费看的 | 国内精品久久久久久2021浪潮 | 91久久精品国产亚洲 | 亚洲视频在线视频 | xxxx hd videos| 黄色特级片黄色特级片 | 依人九九宗合九九九 | 成人视屏网站 | 无码专区aaaaaa免费视频 | 亚洲情在线| 欧美一级淫片免费视频1 | 国av在线| 伦理三区 | 中日韩乱码一二新区 | 欧美一级淫片免费播放口 | 欧美精品一区二区视频 | 久久国精品 |