6

雇われたプログラマーによって作成された父のWebサイトの背後にあるPHPスクリプトを調べました。今、私は彼より優れているとは思っていませんが、そのテクニックは最高ではないかもしれないと思います。

Webサイトには動的なページ本体があります。つまり、私の父は特定の管理ページを介して、Webサイト内のほとんどのWebページのHTMLコンテンツを変更できます。現在、データベースを介して作成されています。ページはすべてデータベースに保存され、すべてのリクエストはデータベースからページをフェッチして実装するクエリを処理します。

さて、この方法は、データベースへの追加のクエリが必要になるため(キャッシュされている場合はそれほど高価ではないにしても)、非常に悪いと思います。ページをHTMLファイルとして保存し、必要に応じてファイル自体を変更する方が効率的ではないでしょうか。このように、ファイルの編集はより高速であり、リクエストごとのhtmlファイルのコンテンツのロードは、クエリを実行するよりもはるかに簡単で高速です。

それは...ですか?この状況を処理する他の(より効率的な)方法はありますか?

4

5 に答える 5

2

これは世紀の問題です:)この質問に対する正確な答えはありません。パフォーマンスのヒントです。人々は最近30年間、ページの読み込み時間を最適化するために取り組んでいます。

于 2012-06-28T11:57:22.103 に答える
2

いいえ、架空の「/mypages」フォルダの下に固定HTMLページを配置することをお勧めします。

  • ユーザーが自分のWebページに約500のコンテンツを必要としている場合はどうなりますか?彼は500ファイルになってしまいます。
  • 確かに、それらはより速く提供されますが、以下の大規模な問題に対してはそれで十分ですか?
  • ページ翻訳はどうですか?これは、静的なhtmlファイルでは悪夢になります。
  • ページは動的であるため、そのようにレンダリングされます。つまり、サードパーティ/プラグイン(たとえば)がコンテンツを「入力」して、一度に複数のコンテンツに適用することができます。同じものを多数のHTMLに適用してから、もう一度変更するのはどうでしょうか。
  • ロードされた<HEAD>* erと* <SCRIPT>**を変更したい場合はどうでしょうか?すべての変更で500のコンテンツすべてでそれを行うことを余儀なくされます
  • それらの.htmlファイルに含まれているPHPはどうですか?これにPHPを入れていない場合、これは理由ではありませんが、含まれているphpファイルの名前が変更/削除された場合は、大規模な更新で​​すべてのファイルを変更する必要があります。
  • テンプレートについて考えてください; 最新のCMS(または管理ページ)が今日動的である理由は、コンテンツ自体に影響を与えることなく、クラス/スタイルなどを変更できるためです。使用されるテーマまたは単一のクラスへの単一の変更は、(再び)大規模な更新を引き起こします。
  • データベースもファイルですが、より高速に実行されます。パフォーマンスが心配な場合は、キャッシュを使用するようにデータベースをプログラムできます(SELECT data FROM content WHERE id = 1などのクエリ)。これにより、パフォーマンスの観点から、クエリはほとんどクエリになりません。

もっと考えることができます。

于 2012-06-28T12:10:48.993 に答える
1

CMSが動的コンテンツを保存/フェッチするためにデータベースを使用する必要がある理由はいくつかあります。DBに依存したくない理由がいくつかあるのと同じように。

  • プロDb:

    • セキュリティ:それは明白で、少し曖昧な議論ですが、それでもなおです。コンテンツを個別のファイルとしてサーバーに保存する場合は、パブリックアクセスを許可しないディレクトリに保存する必要があります。そうでない場合、ユーザーはサイトのチャンクに個別にアクセスできる可能性があります。
      無視できる意図を持っている人も、あなたのサイトのコンテンツを簡単に変更することができます。もちろん、これを防ぎ、全体的なセキュリティを強化する方法はたくさんあります。データベースシステムは、独自のデバイスに任せた場合も、完全に安全というわけではありませんが、最小限の労力でハッカーに追加の障害をもたらします。
      注:セキュリティの議論は、スクリプトがインジェクションをどの程度適切に除外するか、およびサーバーをどれだけ安全にセットアップするかによって決まります。

    • ディスクの使用状況。個別のファイルを使用して要求された各ページを作成する場合、サーバーは要求ごとにHDにアクセスする必要があります。繰り返しになりますが、キャッシュはこの問題をある程度解決しますが、DBクエリの結果をキャッシュする方が簡単で(一般的に)優れています(パフォーマンスの面で)。データベースサーバー上、PHP内、またはさらに良いことに、両方。

    • ロギング。つまり、コンテンツを変更すると、データベース駆動型CMSの管理がはるかに簡単になります。コンテンツを変更し、変更を元に戻す/ロールバックする場合は、DBがそのような機能を実装する最も簡単な方法です。HTMLを使用すると、すぐにと呼ばれる大量のファイルを探し回ることになりますsite_menu_block_YYYY-mm-dd.html.backup。これがスクリプトによって実行されたとしても、DBを使用するよりもほぼ確実に遅くなります。

    • 翻訳:vlzvlが指摘したように、静的ページを使用している場合は、言語ごとに1回ずつ、各ページがN回表示されることになります。スタイルシートを変更するときは、N個のファイルも変更する必要があります。これはリソースが高価です。または、スクリプトはリクエストごとにHTMLテンプレートファイルと実際の内容を含むXMLファイルを解析します。このようにして、HTMLファイルのSEOの利点が失われ、サーバーの負荷が増えてサイトの速度が低下ます。

  • プロHTML:

    • 私はここで1つの確かな賛成論を与えることができるだけです:この方法でSEOサイトを取得することははるかに簡単です。検索エンジンが個別のファイルにインデックスを付けることを許可するだけです。これにより、CMSの全体的なセキュリティが大幅に低下します。

とはいえ、扱っているデータの種類に応じて、すべての主要なCMSが両方の方法を使用していると言っているのは正しいと思います。たとえば、HTMLヘッダーは、JSファイルやスタイルシートのように、部分的に個別のファイルとして保存されることがよくあります。

于 2012-06-28T12:14:43.407 に答える
0

これはすべてコンテンツによって異なります。ニュースのようにコンテンツが大きく異なる場合は、ニュースエントリごとにデータベース内にデータを保存し、データをテンプレートにロードする方が簡単です。ただし、単一のコンテンツ(巨大な記事や情報ページなど)がある場合は、HTMLを使用してデータを保存できます。

また、多言語ページが必要かどうかによっても異なります。HTMLだけで多言語ページを作成することができます。しかし、これは上記と同じです。どんなコンテンツがありますか。エントリが大きく異なるか、コンテンツが同じではありませんか?

しかし、これまで私が行ったことは、両方を同時に行ったことです。クライアントがニューススクリプトや多言語などを含むページを必要とした場合、ユーザーがニュースエントリにログインしてニュースを保存できるページを作成しました。異なる言語でありますが、他のサイトへの変更はHTMLを介して行われ、言語ごとに異なるhtmlファイルがありました。

編集:

ユーザーによっても異なります。ユーザーがHTMLの使用方法を知らないが、自分でサイトを変更したい場合、利用可能な唯一のオプションは、変更を行うための管理センターをユーザーに提供するオプションです。または、ユーザーに多くの力を与えたくない場合:D

于 2012-06-28T12:04:59.280 に答える
0

私の意見:ほとんどのCMSは、最終的に訪問者に送信される1つのページをコンパイルするために、多くのDBアクセスを処理し、多くのファイルをロードします。それでも、ほとんどのサイトでは、パフォーマンスの問題はありません(つまり、ほとんどのページが1秒未満で読み込まれます)。ですから、DBアクセスが1つしかないという問題が発生した場合は、驚かれることでしょう。しかし、処理のために、あなたのサイトが本当にそれを必要としないのに、なぜデータベースを使うのですか?すべてのページで同じ1つのメニューファイルと1つのフッターファイルをロードする1つのindex.phpを使用し、その間に選択した個々のhtmlファイルをロードするクライアント用のサイトをいくつか作成しました。したがって、ページを編集するには、任意のエディターを使用して、対応するhtmlを開いて編集します。とてもシンプルです。

于 2012-06-28T12:15:07.713 に答える