簡體   English   中英

如何強制瀏覽器緩存按需生成的圖像?

[英]How to force browser to cache on-demand generated images?

諸如URL http://mydomain.com/text/SGVsbG8gd29ybGQh/params/Y29sb3I9I2Y5NzMwNixmb250LWZhbWlseT1Db21pYyBTYW5zLGZvbnQtc2l6ZT0yMnB4LGZvbnQtd2VpZ2h0PWJvbGQsZm9udC1zdHlsZT1ub3JtYWwsdGV4dC1kZWNvcmF0aW9uPW5vbmUsdGV4dC1hbGlnbj1sZWZ0/96呼吁,其基於包含在URL中的編碼信息的圖像的PHP腳本。 信息編碼為實際文本,再加上一些格式設置選項(例如顏色,字體粗細等)。

第一次調用此URL時,將生成圖像,將其保存到磁盤,然后作為響應返回。 從對同一URL的第二次調用開始,圖像從磁盤加載並輸出到客戶端,而不是重新生成。

如何強制瀏覽器將此類URL視為已存儲圖像文件的任何其他路徑並將其緩存,以便下次調用該URL時,瀏覽器將從其緩存中加載圖像?

順便說一句,我在控制器中的代碼(基於CodeIgniter)如下:

public function addText($text, $params, $resolution=96) {
        $this->load->model("textimage_model");
        $image = $this->textimage_model->getImage($text, $params, $resolution);

        // Prepare the response headers and output the image to the client
        header("Content-type: image/png");
        header("Content-disposition: inline; filename=mytext.png");

        if (is_string($image)) {
            readfile($image);
        } elseif (is_resource($image)) {
            imagepng($image);
            imagedestroy($image);
        } else {
            //
        }

    }

發送緩存頭。

$seconds_to_cache = 60 * 60 * 24; // 1 day
header("Pragma: cache");
header("Cache-Control: max-age=" . $seconds_to_cache);

由於您的緩存機制似乎是一種指紋,因此您可以讓瀏覽器將其永久緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM