1

10 分ごとに、コンソール アプリから IIS ボックスの Web フォルダーに 20 万個の JSON ファイルを書き込んでいます。モバイル クライアントは、IIS を介してこのファイルからデータを定期的に取得します。

書き込み中に IIS がファイルにアクセスするとどうなるか疑問に思っています。この質問は、 File.WriteAllText が FileShare.Read を使用していることを示しているため、書き込み中に誰かがそれを読むことができます。

これを v. big ファイルでテストし、IIS が書き込みの途中で要求をどのように処理するかを確認します。json.201207231033バージョン ファイルに書き込み、シンボリック リンクを に更新するUNIX のトリックを覚えていますjson

他の誰かがこれを経験していますか?

4

1 に答える 1

1

ASP.NET ページで次の疑似コードを使用して問題に取り組む方法を次に示します。結果をメモリにキャッシュし、キャッシュに 10 分以上保持されたときにデータを更新します。

    var data = Cache["data"];
    if (data.Timestamp <= 
        DateTime.Now.Substract(TimeSpan.FromMinutes(10)))
    {
            //Refresh cache with new data when it's older than 10min.
            // You could hypothetically do this in a separate thread
            // if you wanted to do so.      
            data = new Data(GetFromDb(), timestamp);
            Cache["data"] = data;

            return Cache["data"];
    }
    else
    {
            //Use existing data
            return Cache["data"];
    }            

IIS のランタイム キャッシュの使用方法に関するリファレンスは次のとおりです。

キャッシュされた値が常に最新であることを確認したい場合は、現在のソリューションのアプローチではなく、10 分ごとにこのページにヒットするジョブを作成できます。

データをキャッシュする方法は他にもたくさんありますが、OS ファイル システムの使用は実際には最適な方法ではありません。

于 2012-07-23T17:19:15.120 に答える