MVC4 アプリケーションで ASP.NET MVC ラッパーを使用しています。
1 つの特定の問題以外はすべて正常に動作します。Kendo UI Grid のデータソースを定義しました。ビューが読み込まれると、読み取りアクションが期待どおりに呼び出されます。
ただし、ページがリロードされると、「読み取り」リクエストは 304 結果の応答を取得します。
データ ソース構成でキャッシュを無効にするにはどうすればよいですか?
MVC4 アプリケーションで ASP.NET MVC ラッパーを使用しています。
1 つの特定の問題以外はすべて正常に動作します。Kendo UI Grid のデータソースを定義しました。ビューが読み込まれると、読み取りアクションが期待どおりに呼び出されます。
ただし、ページがリロードされると、「読み取り」リクエストは 304 結果の応答を取得します。
データ ソース構成でキャッシュを無効にするにはどうすればよいですか?
Kendo dataSource の 'cache' 属性を false に設定することができます。これにより (注: これはテストしていません)、要求されたページが要求ごとに新しく取得されるようになります。
キャッシュを false に設定すると、「_=[TIMESTAMP]」パラメーターがリクエストに追加されます。必要に応じて、サーバー/コントローラー側で解析して、サーバー側のキャッシュ操作を回避できます。
また、Kendo トランスポート操作ごとにキャッシュ動作を指定できることにも注意してください (つまり、CRUD 操作のレベルまたはトランスポート全体に対して指定できます)。
こちらをご覧ください: http ://docs.kendoui.com/api/framework/datasource#configuration-transport.read.cache-Boolean
コード:
transport: {
read: {
cache: false
}
}
.Read(read => read.Action("Action", "Controller", new { area = "Area" }).Type(HttpVerbs.Post))
ビューをロードするサーバー側コントローラーのアクションで装飾を試すことができます
[OutputCache(Duration = 0, NoStore = true)]
たとえば、属性
public class OrdersController : Controller
{
[httpGet]
[OutputCache(NoStore = true, Duration = 0)]
public ActionResult Orders(string userId)
{
// your code
return View(viewModel);
}
}
NoStore
- 機密情報の二次保存を防止するかどうかを決定するブール値
Duration
- ページまたはユーザー コントロールがキャッシュされる時間 (秒単位)。ページまたはユーザー コントロールでこの属性を設定すると、オブジェクトからの HTTP 応答の有効期限ポリシーが確立され、ページまたはユーザー コントロールの出力が自動的にキャッシュされます。
Datasource 構成を介してコントローラーになることはできません。キャッシュを防ぐには、コントローラの Read メソッドに属性を適用する必要があります。
別の方法は、[HttpPost] 属性をコントローラー メソッドに適用することです。次に、GET メソッドを使用しないようにデータソースを構成します。この場合、デフォルトで POST メソッドが使用されます。