問題タブ [data-caching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
1377 参照

sql-server-2008-r2 - CLRトリガー内からWebリクエストを送信する

CLRトリガーをテーブルに割り当てて、キャッシュサーバーをリアルタイムで更新するためのプロトタイプソリューションを実装しました。これにより、特定の列が更新されるたびに、トリガーから呼び出されたURLがキャッシュサーバーを正しいデータで更新します。

正常に動作しており、コードは次のとおりです。

}

パフォーマンス、デッドロック、SQLクラッシュ、またはその他の潜在的な懸念事項に関するこのアプローチの「短所」について、専門家/経験豊富な意見をお聞かせください。

誰かがこれを試したことがありますか(多くの人が持っている必要があると確信しています)、その結果はどうでしたか?実装が成功したか、他の方法に戻ったか、キャッシュをリアルタイムで更新しましたか?

0 投票する
1 に答える
544 参照

asp.net - asp.net におけるデータ キャッシュのセキュリティ上の問題

よくキャッシュすることは、パブリック (Web サイトのすべてのユーザー) で頻繁に使用されるデータへのアクセスを高速化するための完璧な方法です。しかし、特定の役割 (例えば、管理者のみ) によってアクセスされることになっているデータについてはどうでしょう。

この種のキャッシングは安全ですか?データ キャッシングを使用する際に行うべきセキュリティ関連のアクションはありますか?

0 投票する
2 に答える
4635 参照

c# - System.Web.Caching.Cacheはモデルでnull例外をスローします

この質問は簡単なはずですが、そうではありません。ASP.NETでSystem.Web.Caching.Cacheクラスを使用する際の問題を読みました。

私はシングルトンクラスを持っています:

私のコードの他の場所で、私が次のように呼んでいる場合:

2行目でnull参照例外がスローされるのはなぜですか?

たぶん私はコードのどこかで間違いを犯しましたか?

ありがとうございました。

0 投票する
0 に答える
989 参照

asp.net-mvc - Asp.Net Mvc および SqlServer の最適なデータ キャッシュ戦略

ユーザーは、ほとんどの場合、Web アプリケーションの CRUD 操作を行うことができます。しかし、私の特定の Web アプリケーションでは状況が異なります。ユーザーは決して CUD を行いません。データの取得のみが可能です。

だから写真:

1- データベースを頻繁に更新するサービスがあります (毎秒 7 ~ 8 回の更新) (スケジューリング フレームワークは Quartz.Net です)

2- SQL Server 2008 R2

3- Asp.Net MVC 4 (Web ユーザーは SQL Server からのみデータを読み取ることができます!)

要件: Web ユーザーが SQL Server からデータを取得することはありません。

戦略 A: (コードネーム: ホストは Web アプリ)

1- Asp.Net MVC からサービス ライブラリを呼び出して、データベースとキャッシュをトランザクションで更新できるようにします。

2- Web ユーザーはキャッシュから読み取ることができます

3- App_Start で、SQL サーバーからキャッシュ データを更新します。

4- 時間ベースのアプリケーション プールのリサイクルは終了しました

戦略 B: (コード名: Web パイプ)

1-サービスはexeとして実行されます。

2-サービスはSql更新を行わず、WebリクエストをAsp.Net MVCアプリケーションに送信します。

3- したがって、Asp.Net MVC アプリケーション (コントローラーのアクション) はトランザクション的に更新およびキャッシュを行います

4- App_Start で、SQL サーバーからキャッシュ データを更新します。

5- 時間ベースのアプリケーション プールのリサイクルは終了しました

どちらのシナリオでも、Web ユーザーは SqlServer からデータを取得しません。それらは常にキャッシュからデータを読み取ります。これらは常にオブジェクト キャッシュを使用します。Asp.Net Mvc の最速のキャッシュ。シリアル化のオーバーヘッドはありません。

0 投票する
3 に答える
498 参照

c# - 外部プロセスを使用して(つまり、ページのコードビハインドを介さずに)オブジェクトをキャッシュする方法はありますか?

ASP.NETWebアプリケーションに必要な非常に大量のデータの最初のバッチがあります。これまで(実際には2年間!)、Page_Loadで実行したり、ViewStateまたはSessionに保存したりすることができないほどコストのかかるものは何もありませんでした。しかし今、私はかなり静的なままで(最大で1日1回更新される)オブジェクトのリストが必要であり、約5000個のオブジェクトが含まれています。Pag​​e_Loadで毎回ビルドすると、ロード時間が明らかにヒットします。

キャッシングに関するいくつかのグーグルは、のようなものを使用したいくつかの非常に基本的な例を示していますCache["myStuff"] = myObject;、そしてそれはすべてうまくいっています。ただし、アプリケーションがアクセスされているか使用されているかに関係なく、特定の時間に更新を実行するようにWebアプリケーションを設定できる方法があるかどうかを知りたいです。

たとえば、このプロセスでリストを更新して、誰も何も使用していない午前4時のように1日1回実行するようにします。たとえば、午後の1日目に、Page_Loadはキャッシュされたオブジェクトを取得するようにチェックしますが、nullに戻るため、その場合は、弾丸をかみ、1日目の残りのリストをリクエスト/ビルドして、キャッシュに保存します。 。1日目の残りの期間中、オブジェクトはキャッシュ内にあり、まだ有効であるため、誰もオブジェクトを作成する必要はありません。

1日目が終了し、2日目は午前4時です。誰もページを使用していません。1日目からキャッシュに保存されていたオブジェクトを削除して再構築し、午前中にオフィスに到着したときに、最初にページにアクセスした人が今日のリストを作成する必要がないようにします。すでに完了しています。

私が持っている唯一のアイデアは、Windowsのスケジュールされたタスクなどで実行されるコンソールアプリケーションの作成を検討することです。しかし、それでも、そのような外部アプリケーションからASP.NETWebアプリケーションとどのように対話できるかはわかりません。

うまくいけば、私は理にかなっています。私が達成したいことは可能でさえありますか?

0 投票する
0 に答える
90 参照

caching - ユーザー コントロールまたはページ キャッシュを、キャッシュされたディクショナリのコンテンツで変化させる

昨日、キャッシングについて少し考えてみました。

具体的には、データのキャッシュです。

ASP.NET 4.0 を使用し、VB でコーディングしています。MySQL データベースを使用しているため、SQL Server のみの sqlDependency を使用できません。

私にとって重要なことは、すべてのデータ変更が反映され、ユーザーに古いデータが表示されないようにすることです。そのため、特定のテーブルでデータベースの変更を監視する方法を考え出す必要がありました。

私が思いついたのはこれです...

1: 最近書き込まれたテーブル名と書き込み時のタイムスタンプを含むキー/値ディクショナリをキャッシュに作成するルーチン。

2: データを書き込むときに呼び出される一般的に利用可能な関数。つまり、すべての INSERT、UPDATE、または DELETE コマンドは、この関数に 2 つの引数を渡すことによって作成されsqlますtableChanges

この関数では、sqlは単純に UPDATE/INSERT コードでtableChangesあり、このコマンドの影響を受けるテーブル名のコンマ区切りリストです。

ポイント 1 の表が作成されるのは、任意の修正中です。

3:getData引数を取る一般的に利用可能な関数:

4: 上記と同様の引数に基づいて、データ オブジェクトをキャッシュに書き込む関数。

ここで、関数 #3 は、渡されたキーがキャッシュに含まれているかどうかを最初にチェックし、含まれていない場合は、単純にデータベースに移動して新しいデータを取得します。

このキーが含まれている場合、次の 2 つのことを行います。まず、このアイテムが追加されたときのタイム スタンプを取得します。これは常にcacheKey_added(キャッシュ アイテムを追加するプロセスで作成されます)、次にこのタイム スタンプを取得すると、グラブします。コンマで区切られた 、テーブル名のリストに変換し、最初の関数で作成されtableDependenciesたキャッシュされたデータから、対応するテーブルの更新時間を (テーブル名をキーとして使用して) チェックするすべてをループします。Dictionary

テーブルの更新時刻のいずれかがキャッシュ時刻より新しい場合は、データベースに移動して新しいデータをフェッチします。そうでない場合は、キャッシュされたデータを返します。

同様にDictionary、キャッシュにテーブルが保持されていない場合は、キャッシュされたデータが返されます。これは、データベースに変更が加えられたときにのみこのキャッシュ オブジェクトが作成されるため、変更が行われていないと想定されるためです。

データは常にスライディング キャッシュ時間 (通常は非常に短い) で保持されます。もちろん、キャッシュをまったく必要としないデータは、このプロセスなしで直接取得できます。

上記のコードは実際の質問に必ずしも関連していないため、投稿していませんが、背景は重要です。

だから、私の実際の質問は次のとおりです。

データベース内のテーブルがいつ変更されたかを判断するために上記がうまく機能することを考えると (phpMyAdmin で何も変更されていないことを前提としていますが、それにアクセスできるのは 1 人だけなので、私の場合はこれで問題ありません...どうすれば同じ原則を適用できますか?ユーザー コントロールまたはページをキャッシュするには?

VaryByParam="PARA"そのため、過去にand を使用してユーザーコントロールをキャッシュ VaryByCustom="CUSTOM_VALUE"しました。それは道理にかなってVaryByCustomいます...しかし、これを行うためにパラメータ(テーブル名とページの最終キャッシュ時間)をカスタム関数に確実に渡すにはどうすればよいでしょうか...または、私はナンセンスを言っていますか?!

さらに、すべてのキャッシュ項目に追加の_addedキーを保存することなく、キャッシュの書き込み時間を取得する方法はありますか?

0 投票する
1 に答える
445 参照

asp.net - ASP.NET 4でディレクトリを削除した後にアプリケーションの再起動を無効にする方法は?

asp.net でディレクトリを削除すると、アプリケーションが再起動し、すべてのセッションが失われ、キャッシュがクリアされます。そこで、次の解決策を見つけました。次のコードをApplication_Startofに追加してGlobal.asax、アプリケーション プールのリサイクルを無効にしましたが、うまくいかない場合があります。なんで?

0 投票する
1 に答える
231 参照

c# - WinRT のローカル ファイル キャッシュからの読み取りのコスト

私はwinrtメトロアプリを構築していますが、常にこの(非?)問題に遭遇しているようです。

私は、前後にシリアル化できるキャッシュ データのファイルを多数維持していることに気づきました。サービスから取得したデータ、ユーザーが選択したアイテムなど。

呼び出しを書くときにいつも思う質問は、時間がかかる/高価な実際のファイルへのアクセス (および解放など) ですか、それともそこからシリアル化する必要があるデータの量ですか?

たとえば、同じオブジェクト タイプが格納されている可能性のあるいくつかのファイルを 1 つに結合しようとして、オブジェクトを「出力」した後で必要なファイルを特定するなど、どの程度心配する必要がありますか。