0

たとえばhttp://www.idealo.co.ukstatic htmlのような一部の Web サイトは、コンテンツが動的であるにもかかわらず、のみを提供しているように見えます。

たとえば、特定のカテゴリをナビゲートすると、static htmlページへのリンクが表示されます。

http://www.idealo.co.uk/cat/5666/electric-guitars.html

カスタムフィルターを適用すると、次のようなものへのリンクが表示されますstatic html

http://www.idealo.co.uk/cat/5666F456496-735760-1502100/electric-guitars.html

これはどのように達成されますか?新しい入力が与えられるたびに、ページが既に存在する (つまり、既に利用可能である) ように、考えられるすべての動的ページを「事前生成」するのに役立つフレームワークはありstatic htmlますか?

背景: 私たちは不動産オファーの小さな検索エンジンを運営しています。オファーはスクレイパーによって1 日 1 回更新されます (コンテンツは終日静的です)。コンテンツは、Ruby-on-Rails Web サイトで検索できます。トラフィックが増加するにつれて、パフォーマンスが問題になりつつあります。サービスを提供できるように、すべての検索をバッチ生成できるフレームワーク/ツールがあるかどうか疑問に思っていますstatic html

4

3 に答える 3

4

彼らのサイトは動的ではありません。URL 書き換え (例: mod_rewrite) を使用して、入力 URL をスクリプトで満たすことができる要求に変換しています。

例えば:

/cat/5666/electric-guitars.html

次のように書き換えられる可能性があります。

/cat.php?id=5666

これをテストするための簡単なトリックは、/cat/5666/foo.html

この場合の の使用は.html、おそらく、あいまいさによる弱いセキュリティ対策として、サイトで使用されているスクリプトの種類を隠すことです。

あなたの問題に応えて - いいえ、可能なすべての結果を静的な HTML ファイルに生成する (簡単な) 方法はありません。潜在的に数十億の順列を見ています。パフォーマンスの問題がある場合は、パフォーマンス プロファイリング、キャッシュ、クエリの最適化などを調べてください。

于 2012-05-18T12:30:13.150 に答える
0

私はついにこのブログ投稿を見つけました。これは、私が探していたことを実行するいくつかのツールを示しています。今後の参考のためにここに追加します。

ハイド

「Hyde は、Python と Django を利用した静的 Web サイト ジェネレーターです。Hyde はすべての Django テンプレート タグとフィルターをサポートし、独自のタグとフィルターもいくつか備えています。組み込みの Web サーバーと自動ジェネレーターにより、即時の更新と無制限の柔軟性が提供されます... "

ジキル

「Jekyll は、ブログを意識したシンプルな静的サイト ジェネレーターです。さまざまな形式の未加工のテキスト ファイルを含むテンプレート ディレクトリを取得し、Markdown (または Textile) および Liquid コンバーターを介して実行し、完全な、すぐに公開できるサイトを吐き出します。お気に入りの Web サーバーで提供するのに適した静的 Web サイト..."

ブラッター

「Blatter は、動的テンプレートから構築された静的 Web サイトを作成および公開するための小さなツールです...」

于 2013-05-17T09:21:54.557 に答える
0

あなたが説明しているのは、ある意味でキャッシングです。キャッシュを使用すると、アプリケーションはコンテンツが変更された場合にのみページ (およびページの一部) を生成します。Rails には多くのキャッシュ機能が組み込まれており、ニーズに合わせて調整できます。Rails の機能と一般的なアドオンについて説明しているキャッシングに関する Rails ガイドを読むことから始めます。「Rails 3 caching」については Google で検索してください。たくさんの情報があります。最後に、Squid や Varnish など、追加のキャッシュを行うソフトウェアをサーバー スタックに追加できます。適切なツール (および調査) を使用すると、静的サイトの利点の 95% を得ることができます。手動でサイトを準静的な Frankenapp に変更する必要はありません。

于 2012-05-18T13:10:17.290 に答える