0

そのため、読み込み時間を短縮するために、画像とアセットを提供するCDNホスト名を多数設定しています。同じアセットに対して同じホストを一貫して使用するための最良の方法は何ですか?たとえば、button.gifは常にhttp://assets-15.ourserver.comから提供されます。

私は、ファイル名のmd5ハッシュが何らかの形でサーバーにマップされるルールを考え出すことを考えていました(多くの類似点があるため、ファイル名自体を使用することはできません: "button-home.gif"、"button-about。 gif」など)。これが最も効率的な方法かどうかはわかりませんが、うまくいくようです。

誰かこの種のことを経験したことがありますか?これはいくつかの異なる言語で使用されるため、言語に依存しないソリューションが必要です。

編集:これがどのように物事をスピードアップするかについてのYahooの説明:http://developer.yahoo.com/performance/rules.html#split

4

2 に答える 2

1

コンテンツ配信ネットワーク(CDN)のポイントは、ユーザーに最も近いサーバーからアセットをロードすることです。

明示的なサーバーから特定のアセットをロードすると、CDNの目的が無効になります。私の推測では、それはサポートされていません。明示的な場所からアセットをロードする必要がある場合は、CDNに配置せず、中央サーバーに配置します。

于 2010-08-11T16:42:13.030 に答える
1

このようなことをしたとき、とにかく関連するすべてのリソースにID番号が付いていたので、それをベースとして使用しました。それでも、非数値に拡張することはそれほど難しくありません。

使用するホスト名の数にはバランスがあり、ホストルックアップのオーバーヘッドが多すぎると、複数のホスト名の利点よりも優れているため、外部では約12、おそらくそれより少なくなります。

これ自体は、単純なハッシュが、特に巧妙である必要なしに、与えられた範囲にわたって簡単に分割される可能性が高いことを意味します。

アプリケーションがIURIを完全に処理するか(この場合、utf-8処理はすでに処理した問題です)、そうでないため、エンコーディングの問題は混乱しません。この場合、URIのすべての文字がエスケープされます。パスの形式(つまり、実際のURIで使用される名前)はASCII範囲になります。

使用されているサーバーを推測することはセキュリティ上のリスクではないため、暗号で保護する必要はありません。1つまたは2つのページが1つのサーバーにわずかに寄りかかっていても、世界の終わりにはなりません(とにかく、完璧な場合にランダム性が発生します)。

したがって、画像のURIの絶対パス(最初以降のホスト以降のすべて)の文字を実行して、それらの文字を互いに整数値で加算し、ホスト名のその部分のモジュロを使用します。

速度の問題で処理される文字数を制限する場合は、バリエーションが最も大きくなるため、最後から後ろに向かって行います。

「button-home.gif」が「button-about.gif」に似ていることは問題ではありません。このようなプロセスの観点から見ると、実際にはまったく似ていないからです。

使用するホスト名の数を増やす場合は、前の数の倍数として実行してみてください。これにより、古いURIを保持するリソースの数が可能な限り多くなります。

于 2010-08-11T18:15:35.180 に答える