ブログ

画像のキャッシュ先を変更する方法

『技術サポートでは、どのような対応をしているか』
皆様に具体的に知っていただきたく、実際の対応例をご紹介致します。

※問合せ内容、および、回答内容は、一部抜粋にて掲載しております。
——————————————————————
【問い合わせ内容】

画像のキャッシュ先を変更することは可能でしょうか。
現在は /web/cache 配下にキャッシュされていますが、
これを別の場所に変更する方法を教えてください。

OpenPNEバージョン3.8.9
——————————————————————
【回答内容】※メール抜粋※

画像キャッシュのディレクトリを移動する場合の方法について回答します。
OpenPNEではルーティングやURL生成にキャッシュ書き出し箇所を指定している部分があり、
それを任意の画像ディレクトリに指定すれば、ディレクトリの移動が可能です。

下記の修正例は /cache/img から /newPath へと変更した例ですが、ディレクトリ名は任意で変更してください。
ソース修正後は mkdir web/newPath chmod 777 web/newPath のコマンドの実施するなどで
ディレクトリの権限変更を忘れないようにしてください。

なお、本回答では web への単純なアクセスで閲覧可能な web 配下以外に配置する場合や、
そもそも外部のストレージに保存するという場合の対処については示していません。

===修正例===

diff --git a/lib/plugins/sfImageHandlerPlugin/lib/image/sfImageHandler.class.php b/lib/plugins/sfImageHandlerPlugin/lib/
image/sfImageHandler.class.php
index b37f615..c6183b7 100644
--- a/lib/plugins/sfImageHandlerPlugin/lib/image/sfImageHandler.class.php
+++ b/lib/plugins/sfImageHandlerPlugin/lib/image/sfImageHandler.class.php
@@ -137,7 +137,7 @@ class sfImageHandler

static public function getPathToFileCache($format, $width, $height, $filename, $square = false)
{
- return sprintf('%s/cache/img/%s/w%s_h%s%s/%s.%2$s', sfConfig::get('sf_web_dir'), $format, $width, $height, $square
? '_sq' : '', $filename);
+ return sprintf('%s/newPath/%s/w%s_h%s%s/%s.%2$s', sfConfig::get('sf_web_dir'), $format, $width, $height, $square ?
'_sq' : '', $filename);
}

static public function clearFileCache($filename)
diff --git a/lib/plugins/sfImageHandlerPlugin/lib/image/storage/sfImageStorageDefault.class.php b/lib/plugins/sfImageHandlerPlugin/lib/image/storage/sfImageStorageDefault.class.php
index 40b7908..816ee66 100644
--- a/lib/plugins/sfImageHandlerPlugin/lib/image/storage/sfImageStorageDefault.class.php
+++ b/lib/plugins/sfImageHandlerPlugin/lib/image/storage/sfImageStorageDefault.class.php
@@ -48,9 +48,9 @@ class sfImageStorageDefault

$squareSuffix = $square ? '_sq' : '';

- $filepath = 'img/'.$format.'/'.$sizeDirName.$squareSuffix.'/'.$filename.'.'.$format;
+ $filepath = $format.'/'.$sizeDirName.$squareSuffix.'/'.$filename.'.'.$format;

- return _compute_public_path($filepath, 'cache', $format, $absolute);
+ return _compute_public_path($filepath, 'newPath', $format, $absolute);
}

static public function getFilenameToSave($filename)
diff --git a/lib/plugins/sfImageHandlerPlugin/lib/sfImageHandlerRouting.class.php b/lib/plugins/sfImageHandlerPlugin/lib
/sfImageHandlerRouting.class.php
index 3a380c2..7a3fc7c 100644
--- a/lib/plugins/sfImageHandlerPlugin/lib/sfImageHandlerRouting.class.php
+++ b/lib/plugins/sfImageHandlerPlugin/lib/sfImageHandlerRouting.class.php
@@ -14,7 +14,7 @@ class sfImageHandlerRouting

$routing->prependRoute('image',
new sfRoute(
- '/cache/img/:format/:width_:height/:filename.:noice',
+ '/newPath/:format/:width_:height/:filename.:noice',
array(
'module' => 'image',
'action' => 'index',
@@ -36,7 +36,7 @@ class sfImageHandlerRouting
$routing->prependRoute('image_with_suffix',
new sfRoute(
- '/cache/img/:format/:width_:height_:suffix/:filename.:noice',
+ '/newPath/:format/:width_:height_:suffix/:filename.:noice',
array(
'module' => 'image',
'action' => 'index',

===以上===

本問い合わせは、以上で解決いたしました。

=========================================
■公式SNS
https://sns.openpne.jp/
OpenPNEユーザーの皆さんが気軽にコミュニケーションができるQ&Aサイトです。
どなたでも無料で利用できます。(facebook、google、twitter の各アカウントでログインが可能です。)

■技術サポートサービス
http://support.pne.jp/
OpenPNE開発元の手嶋屋が提供しているサービスです。
有料になりますがこちらにお申し込みいただきますと弊社のOpenPNE開発エンジニアがOpenPNEの様々なトラブルについて、調査・サポートさせていただきます。
今後とも、OpenPNE 技術サポートサービスをよろしくお願いいたします。