0

ヘルプが必要です。画像アクセス キャッシュを作成したいです。サンプル画像は URL にあります

example.com/caching/m_images.jpg

その画像が存在する場合は画像を表示しますが、存在しない場合は、.htaccess スクリプトを使用して、次の場所で画像関数を実行します。

example.com/recaching/m_images.jpg

キャッシュフォルダーにカスタムサイズの新しい画像を作成し、画像のURLに再度アクセスします。これを行う方法、または別のより良い解決策がありますか?? ありがとう。

ps 'index.php?' を削除するスクリプト htaccess は既にほとんどありません。codeigniter の URL から

RewriteEngine on
RewriteCond $1 !^(index\.php|js|css|キャッシング)
RewriteRule ^(.*)$ index.php/$1 [L]

したがって、関数の実際の URL は次のとおりです。

example.com/index.php?recaching/m_images.jpg

4

1 に答える 1

1

どうですか:

RewriteEngine on
RewriteRule ^images/(.*)$ index.php/recaching/$1 [L,QSA]
RewriteCond $1 !^(index\.php|js|css|caching)
RewriteRule ^(.*)$ index.php/$1 [L]

上記の「はず」(テストしていません)は、要求されたファイルをイメージフォルダー内にリダイレクトし(イメージフォルダーがあると仮定)、パスをルート再キャッシュに渡します。

次に、 を使用してfile_exists、ファイルが存在しない場合はブラウザに書き込むことができますreadfileheader

すなわち

function recaching($path)
{
    $tmpPath = FCPATH . 'images/' . $path;
    if(!file_exists($tmpPath))
    {
        // change $tmpPath to a file that exists, i.e. a 404 image
        // or if you are generating an image when one doesn't exist
        // create it here.
    }
    $info = getimagesize($tmpPath);
    if($info !== false)
    {
        header('content-type: ' . $info['mime']);
        readfile($tmpPath);
    }
    else
    {
        die('There was a problem rendering the image.');
    }
}
于 2012-05-28T14:02:18.303 に答える