0

私はしばらくの間、自分のブログ システムを実行してきましたが、ほとんどのページで、ページにアクセスするたびに、いくつか (5 ~ 10) の同じデータベース クエリを実行する必要があることに気付きました。

現在、データをxmlファイルにキャッシュすることを考えています。これを行う私の計画は次のとおりです。

--- ブログ投稿・編集時、MySQLデータベースへのデータ挿入・更新、xmlファイル生成

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <id>32</id>
    <title>caching data with xml</title>
    <date>2012-10-01</date>
    <content><![CDATA[<p>blah...blah...blah...</p>]]></content>
</data>

--- ページが表示されたら、最初にファイルの存在を確認し (念のため)、xml ファイルを解析してデータをフォーマット/出力します。

if(file_exists("path/to/blog/32.xml")) {
    $data = simplexml_load_file("path/to/blog/32.xml");
    echo '<h2'>.$data->title.'</h2>';
    echo '<p'>.$data->date.'</p>';
    echo $data->content;
}
else {
    mysql_query(...);
}

これを行うことで、MySQL の作業を大幅に減らすことができますが、後で 100 人または 300 人の訪問者が同じページに同時にアクセスするなどの問題が発生するかどうかはわかりません。PHPはそれを処理できますか?この方法で正しくやっていますか?

情報やヒントを事前に感謝します。

ところで、私はまだこれらのテンプレートを使用することを考えていません。

4

3 に答える 3

1

一般的に言えば、キャッシングは可能な限り常に良い考えであり、あなたのxmlソリューションは多くのパフォーマンスの問題を引き起こさないと思います. ただし、代わりにMemcacheの使用を検討できます (こちらの方が便利です)。

何らかの理由で Memcache を使用したくないが、XML キャッシングを使用したくない場合、それがパフォーマンスに悪影響を与えるか改善するかどうかわからない場合は、単純に SQL クエリとキャッシング ソリューションをベンチマークして比較することができます。

ただし、時期尚早の最適化のように思えます。あなたのブログは本当に同時に 300 人の訪問者を獲得していますか、それとも架空のケースですか?

于 2012-10-19T20:38:53.380 に答える
0

明日リリースされるXAP9.1には、まさにこの機能が含まれています。

XMLデータをキャッシュし、XPathを使用してクエリを実行する必要があることに気付いたため、新しいネイティブXMLAPIを追加しました。

[私はGigaSpacesで働いている免責事項]

于 2012-10-20T08:19:07.600 に答える
0

私は memcached がこのようなことを自動的に行うことができると信じています。

于 2012-10-19T20:36:22.890 に答える