2

私はZend Frameworkを介してWebサイトを作成していますが、これについてかなり長い間疑問に思っていました...

最高の記事モジュールを作成し、通常は記事ごとに meta_keywords/meta_description データベース エントリを追加して、ビューがレンダリングされるときに問題のメタ フィールドに管理バックエンドに入力されたデータを入力するとします。

ただし、動的コンテンツが少なく、これまで HeadMeta() ビュー ヘルパーを使用してメタ キーワード/メタ説明をページに追加している場合を想像してみてください。

データベース内のページごとにメタ キーワード/メタ説明またはその他のメタ要素を構成する方法が必要です。私は、過度のオーバーヘッドを追加することなく、これに対する最善の解決策は何かについて頭を悩ませてきました (Web サイトで行われるすべてのアクションに対してクエリを実行する必要があるため)。

私が最初に考えたのは、メタ属性をデータベースのインデックスに保存して、アクションごとにすべての関連データをすばやく取得できるようにすることでした。GET/POST を介して渡されたパラメーターが提供された結果を変更し、結果セットを無関係にする可能性があることにすぐに気付きました。

したがって、パラメーターも追加できるかもしれませんが、同時にいくつかを無視することもできます (?page=12 パラメーターを考慮する必要がないため...)。シリアル化されたパラメーターを使用して、インデックスに別の varchar 列を追加することはできますか?

または、URL 全体を追加して、通常の選択の代わりに REGEXP 選択を実行しますか? (これがおそらく最も遅い解決策になると思います...)

また、mySQL には約 varchar(200) の UTF-8 インデックスの制限があることに注意してください (したがって、1 つの巨大な URL を保存できませんでした)。

これを解決する良い方法を考えた人はいますか?

4

1 に答える 1

1

データ構造が正しいように思えます: メタ キーワード/説明は記事ごとにする必要があります。

最終的には、データベースから記事を取得する必要があります - それが単一の記事であろうと「最良の」記事のグループであろうと。そのため、キーは、ある種のサーバー側のキャッシュでパフォーマンスを最大限に維持することだと私には思えます。

通常、データベース接続で構成され、取得したデータをキャッシュするサービス クラス (サンプルを参照) を使用します。キャッシュの有効期間は、キャッシュされたデータでさえ「十分に新鮮」になるように十分に短く設定できます。または、フロントエンド リクエストが常にキャッシュ ヒットを取得するように、cron を介してキャッシュをクリア/設定します。または、キャッシュの有効期間を永久に設定し、管理者側で更新時にのみキャッシュをクリア/入力することもできます。このアプローチの実行可能性は、更新の頻度に依存します。

データを取得したら、値を HeadMeta ビュー ヘルパーに詰め込みます。

于 2010-08-27T06:40:52.127 に答える