dポイントプレゼントキャンペーン実施中!

Smartyとphpで動的にページコンテンツを生成するサイトをつくっています。
例えば、
index.php?m=front → front.phpにアクセスしてfront.tplを返す
index.php?m=page2 → page2.phpにアクセスしてpage2.tplを返す
index.php?m=page3 → page3.phpにアクセスしてpage3.tplを返す

という動作をさせています。
ただ設置しているレンタルサーバーが最近重く動作が鈍重になってしまい、phpファイルからただのhtmlファイルに換えたいと思っています。
上の例で言えば、
index.php?m=front → front.html
としたいのです。

はじめからfront.htmlを用意し、file("front.tpl")でテンプレートを読み込んでファイルを書き換えようと試しましたが、データベースの情報を含むページにそのデータの内容が反映されないところで行き詰っています。

何かしらの方法で、
php → Smarty → html生成
ということができないでしょうか?

よろしくお願いします。

A 回答 (3件)

casheを作成しているならば、htmlと同等だと思うのですが・・・


cgiとして動かせば多少は、重くなるかもしれませんが、
よっぽど、アクセスが多くないのなら、それ程気にならないと思いますが?

普通のhtmlファイルが遅いのならば、サーバの問題でしょうし、
極端に違うならば別の問題かもしれないので、
サーバ会社へ問い合わせるのがよろしいのでは?
    • good
    • 0
この回答へのお礼

>f_motionさん

以前はhtmlファイルで今ほど重くはなかったので、phpの処理の影響と思っていたのですが。
とりあえずサーバー会社には問い合わせてみます。


また、キャッシュの使い方の問題ということはありえますか?
物の本によれば、「テンプレート更新チェックのためのわずかな処理によってパフォーマンスが阻害される」とありましたが、例えば

$smarty->cache_lifetime = 3600;
$compile_check = false;
にしておけば、一時間ごとにキャッシュが破棄され、アクセスがあれば新しいキャッシュが自動で更新される、ことになりますでしょうか?

お礼日時:2006/10/25 15:13

やはりCGIプログラムとして呼び出されている以上、それなりのオーバーヘッドは避けられません。

Apacheのモジュールとして動作させるサーバーに乗り換えるのがもっとも確実な方法だと思います。
    • good
    • 0
この回答へのお礼

その通りですよね。
やはりサーバーの仕様はどうしようもありませんでした・・・
ありがとうございました。

お礼日時:2006/12/07 10:47

キャッシュを使えば、速度は速くなりますが、


DBが更新されたら、キャッシュも更新する
などの処理も必要になります。

どれ位アクセスがあるか分かりませんが、
サーバなどに問題がありそうですが・・・

参考URL:http://sunset.freespace.jp/Smarty/SmartyManual_2 …

この回答への補足

>f_motionさん
回答いただいて有難うございます。

f_motionさんの仰るようにキャッシュを使用しています。DB更新毎にキャッシュを更新するという設定にもしております。
ただそれでも遅いときは、画面表示に数秒かかるときがあって、その状況を改善したいのです。

確かにサーバーの問題かもしれないですね。
サーバーは、e-storeのサイトサーブというプランを使っているのですが、phpの実行はcgiプログラムとして動作するとなっており、
e-storeのcgiファイルの設置に関しては、
【設置ディレクトリ 推奨は、ログインディレクトリ(docs/)の1つ上にある cgi-bin ディレクトリですが、docs ディレクトリ内  でも動作します。】 ← public_htmlです。
呼出アドレスについては
【 ・cgi-bin ディレクトリに設置した場合は、「http://www.お客様ドメイン名/cgi-bin/ファイル名」】
となっていますが、私はcgi-binディレクトリは使用していません。

自分の思い当たるところでは、上の点かという気がしています。(サーバーの知識が乏しいので勘ですが・・・)

やはりphp → Smarty → html生成はできないでしょうか?
それかサーバーに設置を工夫することで改善できるでしょうか?

補足日時:2006/10/25 10:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!