茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    PHP header()輸出圖片緩存
    來源:易賢網(wǎng) 閱讀:1873 次 日期:2014-12-10 13:47:46
    溫馨提示:易賢網(wǎng)小編為您整理了“PHP header()輸出圖片緩存”,方便廣大網(wǎng)友查閱!

     很多開發(fā)中,我們試圖使用header("Content-type: image/jpeg");來 輸出圖片,試圖用一些php的圖像處理技術(shù),讓輸出圖片更加智能和動感。但我們常常遇到新的問題,除非你規(guī)定不同的URL結(jié)構(gòu),并采用服務(wù)器技術(shù)將圖片緩 存,否則很有可能這些輸出圖片會消耗大量的流量。怎么把它們緩存起來,下次用戶訪問的時候調(diào)用緩存呢?(前提是你的這個圖片希望保持不變)

    代碼如下:

    // put this above any php image generation code:

    session_start();

    header("Cache-Control: private, max-age=10800, pre-check=10800");

    header("Pragma: private");

    header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));

    在header("Content-type: image/jpeg");上方添加上面這段代碼,它將規(guī)定當前頁面緩存的時間(兩天),并在下一次訪問中使用這個緩存時間節(jié)點。

    接下來判斷是否已經(jīng)有緩存,如果有,就使用緩存。

    情況一:如果瀏覽器對當前頁面已經(jīng)有緩存,那么就直接使用它。

    代碼如下:

    // the browser will send a $_SERVER['HTTP_IF_MODIFIED_SINCE'] if it has a cached copy

    if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){

    // if the browser has a cached version of this image, send 304

    header('Last-Modified: '.$_SERVER['HTTP_IF_MODIFIED_SINCE'],true,304);

    exit;

    }

    情況二:瀏覽器緩存了當前頁,雖然我們更新了某些圖片信息,但來源圖片本身沒有變化,而且我們希望使用之前的緩存,那么也使用緩存。

    代碼如下:

    $img = "some_image.png";

    if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])

    &&

    (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == filemtime($img))) {

    // send the last mod time of the file back

    header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($img)).' GMT',

    true, 304);

    exit;

    }

    當然,有些特殊的情況我們還必須考慮,但上面的代碼基本上能夠帶領(lǐng)我們的思路。對了,記得把它們都放在header("Content-type: image/jpeg")的上面。

    接著我們來看個例子吧

    代碼如下:

    <?php

    //調(diào)整圖片大小

    /**

    *圖片按比例調(diào)整大小的原理:

    *1、比較原圖大小是否小于等于目標大小,如果是則直接采用原圖寬高

    *2、如果原圖大小超過目標大小,則對比原圖寬高大小

    *3、如:寬>高,則寬=目標寬, 高=目標寬的比例 * 原高

    *4、如:高>寬,則高=目標高,寬=目標高的比例 * 原寬

    **/

    $image = "test.jpg";

    $max_width = 200;

    $max_height = 200;

    $size = getimagesize($image); //得到圖像的大小

    $width = $size[0];

    $height = $size[1];

    $x_ratio = $max_width / $width;

    $y_ratio = $max_height / $height;

    if (($width <= $max_width) && ($height <= $max_height))

    {

    $tn_width = $width;

    $tn_height = $height;

    }

    elseif (($x_ratio * $height) < $max_height)

    {

    $tn_height = ceil($x_ratio * $height);

    $tn_width = $max_width;

    }

    else

    {

    $tn_width = ceil($y_ratio * $width);

    $tn_height = $max_height;

    }

    $src = imagecreatefromjpeg($image);

    $dst = imagecreatetruecolor($tn_width, $tn_height); //新建一個真彩色圖像

    imagecopyresampled($dst, $src, 0, 0, 0, 0,

    $tn_width, $tn_height, $width, $height); //重采樣拷貝部分圖像并調(diào)整大小

    header('Content-Type: image/jpeg');

    imagejpeg($dst,null,100);

    imagedestroy($src);

    imagedestroy($dst);

    ?>

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機網(wǎng)站地址:PHP header()輸出圖片緩存

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)