Posts tagged cache

iPhone/iPod touch に表示を最適化するプラグイン iWPhone を入れました

2

iPot touch を購入してから自分のブログを iPod touch で見ることが多くなりました。どうせなら表示を iPhone/iPod touch に最適化しようと思い iWPhone というプラグインを入れてみました。

インストール

  • iWPhone をダウンロードする
  • 解凍して、iwphone.php をwp-content/plugins へアップロード
  • iwphone-by-contentrobot をディレクトリごと wp-content/themes へアップロード
  • 管理画面からプラグインを有効化する

(続きを読む…)

[symfony] askeet 1日目

4

symfony を学習するために askeet を順番にやっていくことにしました。まずは1日目です。
(続きを読む…)

WordPress を高速化する5つの方法

17

WordPress を高速化する5つの方法です。

  1. テーマの効率化
  2. PHP の高速化
  3. ページキャッシュプラグインの使用
  4. MySQL クエリキャッシュ
  5. MySQL テーブル最適化

(続きを読む…)

IE で CSV がダウンロードできない問題

1

OpenPNE の管理画面からメンバー情報を CSV ファイルとしてダウンロードする機能があります。その CSV ダウンロードが IE6 でエラーになってダウンロードできない問題がありました。

原因はマイクロソフトのサイト Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題 に書かれていました。

対処方法として、
webapp/modules/admin/do/csv_member.php を webapp_ext/modules/admin/do/csv_member.php にコピーして

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=member.csv");

となっているところを下記のように修正します。

header("Pragma: public");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=member.csv");

これでダウンロードができるようになります。

なお、Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題 では現象が発生するブラウザとして

?Microsoft Internet Explorer 5.0
?Microsoft Internet Explorer 6.0
?Microsoft Internet Explorer 6.0 Service Pack 1

と書かれていましたが、 IE6 の SP2 でも同様の現象が発生しました。

CakePHP 保存したデータをすぐに find したい場合キャッシュを OFF にする

1

CakePHP で保存したデータをすぐにfind するとキャッシュが効いている為に保存したばかりのデータを取得することができません。
その場合はキャッシュを OFF にすることにより新しいデータを取得することができます。

$this->Model->cacheQueries = false;

CakePHP キャッシュファイルの使用

1

CakePHP でキャッシュを使用するときに便利なグローバル関数があります。

cache($path, $data, $expires, $target)
$data のデータをキャッシュします。
キャッシュする場所は
$target==”cache” なら /app/tmp/cache/ + $path
$target==”public” なら /webroot/ + $path
になります。$target を指定しなければ $target==”cache” です。
$expires はキャッシュの有効期間です。
内部で
$expires = strtotime($expires, time());
が行われるので、strtotime の Data input formats 形式に準拠したものでなければいけません。
デフォルトは $expires = ‘+1 day’ です。
clearCache($params, $type, $ext)
$paramsが文字列でキャッシュディレクトリかファイル名にマッチする場合はキャッシュから削除されます。
$params が配列の場合は配列内の文字列全てに対して上記の処理が行われます。
対象のディレクトリは $type で指定します。
$type のデフォルトは ‘views’ です。
対象ディレクトリは /app/tmp/cache/ + $type になります。
cache 関数で ‘public’ を指定した場合のクリアはこの関数ではできないようです。

結構簡単にキャッシュ処理ができそうです。

CakePHP で Smarty を使用するメモ

3

Smarty を CakePHP で使用する方法を調べたメモ

Smarty の用意

Smarty ディレクトリを/vendors ディレクトリへコピー

/vendors/smarty/Smarty.class.php

のようになる。

Smarty が使用するディレクトリを作成

/app/tmp/smarty/cache/
/app/tmp/smarty/compile/

Smarty 用の View クラスの準備

レンダリングを任せる Smarty View Class を設定します。
Smarty View Class をダウンロードして smarty.php とリネームして

/app/views/

に配置する。

smarty という名前のサブディレクトリを使用しないなら
$this->subDir = 'smarty'.DS;
をコメントアウトする。
また、
$this->Smarty->assign_by_ref('view', $this);

$this->Smarty->assign_by_ref('this', $this);
に変更する。
この変更はテンプレートの中で $this を .thtml と同じように使用したい場合に必要。

AppController の設定

/app/app_controller.php

を作成

class Appcontroller extends Controller{
    var $view = "Smarty";
}

実際の使用

view に .tpl があれば Smarty テンプレートとして処理を行い、なければデフォルトの .thtml を表示するようになる。

.tpl の中では .thtml で使用できるヘルパーも使用できる。
.thtml の「<?php echo」を「{」、「;?>」を「}」にすればほぼそのまま利用できる。

ただ、.thtml で HTMLヘルパーを使用している場合

{$html->input('Post/name', array('size'=>'30'))}

のままでは、array(…) でエラーになる。

これを修正するには、Smarty のプラグインを使用して解決する。
プラグインをダウンロードして function.assign_assoc.php にリネームして

/vendors/samrty/libs/plugins/

に配置する。

テンプレートの先頭で

{assign_assoc var='ArrayName' value='size=>30'}

などとして

{$html->input('Post/name', $ArrayName)}

とすればOK.

ただ結構最後のやつが面倒かも。。。

Go to Top