私はウェブサイトで作業しており、都市のリストを表示するドロップダウンが必要です。アクセスを高速化するには、都市のリストをどこに保存すればよいですか? このデータをDBに保存したくありません。
XMLファイルに保存するのは良い考えですか?
私はウェブサイトで作業しており、都市のリストを表示するドロップダウンが必要です。アクセスを高速化するには、都市のリストをどこに保存すればよいですか? このデータをDBに保存したくありません。
XMLファイルに保存するのは良い考えですか?
おそらくSql依存関係またはファイル依存関係を使用して、キャッシュに保存します。
public DataTable GetCities(bool BypassCache)
{
string cacheKey = "CitiesDataTable";
object cacheItem = Cache[cacheKey] as DataTable;
if((BypassCache) || (cacheItem == null))
{
cacheItem = GetCitiesFromDataSource();
Cache.Insert(cacheKey, cacheItem, null,
DateTime.Now.AddSeconds(GetCacheSecondsFromConfig(cacheKey),
TimeSpan.Zero);
}
return (DataTable)cacheItem;
}
XML で保存する場合も問題ありませんが、変更があるたびにファーム内のすべてのサーバーにファイルを公開する必要があります。
テキストファイルに保存します。これにより、XML 解析のオーバーヘッドが回避されます。を使用してロードしFile.ReadAllLines()
ます。
リストは XML ファイルまたはその他のフラット ファイル形式で保存できますが、データベースに保存したくない理由によって異なると思います。
より高速なアクセスについて言及しましたが、それについて詳しく説明したいと思うかもしれません。リクエストごとにデータベースにアクセスするオーバーヘッドが必要ないということであれば、それをデータベースに格納し、代わりにアプリケーションの起動時にリストをキャッシュすることを考えたことはありますか? このようにして、データベースのメリットを享受しながら、オーバーヘッドを 1 回支払うだけで済みます。
ただし、小規模なアプリケーションの場合は、XML ファイルで十分です。
リストが変更されない場合は、コード内で文字列の const 配列として宣言するだけです。
ときどき変更される可能性がある場合は、xml ファイルまたはデータベース テーブルに配置しますが、読み取ったときにキャッシュして、セッションで一度だけ読み取る必要があるようにします。
私は、XML が最善の解決策であると考えています。SAX ではなく DOM パーサーを使用する方がよいでしょう。
ファイルがロードされていないときはいつでもファイルをセッションにロードして、XML の読み取り回数を減らすこともできますが、これによりサーバーでより多くの RAM が使用されます。サーバーの RAM にロードされるため、不要なデータをロードしないようにしてください。セッションごとに。意味がある場合は、ログインしているユーザーに対してのみロードできます。
私が提案しようとしているのは HORID スタイルですが、最小の「フットプリント」で最も速く取得できると思います。
public static readonly string [] CityList = new string []
{
"Sydney",
"New York",
"London"
};
さて、あなたが解決策を好まないことを願っています。あなたの問題に対してエレガントで保守可能な解決策を提供できるように、もう少し背景を教えてください。しかし、あなたのすべてがスピードであるなら...