ASP.NET 缓存和 AJAX 调用

本文关键字:AJAX 调用 缓存 NET ASP | 更新日期: 2023-09-27 18:36:21

我正在做一个 ASP.NET 的MVC3项目,我正在使用Ajax jquery与我的控制器进行通信。 我使用 asp.net 缓存在更新数据库(SQL Azure)之前存储结果。

        function SaveCustomersList() {
        $.ajax({
            type: "POST",
            url: '/Customers/SaveCustomersList/',
            data: "",
            cache: false,
            dataType: "text",
            success: function (data) {
                return true;
            }
        });
    }

该应用程序工作正常,但并不适合所有用户!

当某些用户尝试更新数据库时,传递给我的 DAL 对象的内容为 null。

这只是发生在在网络上工作的用户身上。

我对此没有任何解释。

感谢您的帮助。

ASP.NET 缓存和 AJAX 调用

以下是您需要回答以获得适当帮助的问题列表:

  1. 有多少个应用程序实例正在运行?
  2. 此应用程序在哪里运行并在本地网络或托管在外部?
  3. 当您说"在网络上工作的用户"时,您是什么意思?这是否意味着您的网络或外部网络的用户可以访问此应用程序?
  4. 如果此应用程序在您的网络中运行,并且 Ajax 调用和控制器之间的通信通过代理传递,则代理可能是一个因素。

当您使用 InProc 缓存时,问题了解您是否具有此应用程序的多个实例至关重要。您需要了解 Ajax 和控制器之间的通信是特定于实例的,如果您有本地缓存来处理它,则仅适用于一个实例。但是,如果您有同一应用程序的多个实例,并且使用本地缓存将无法正常工作,因为无法保证实例 #1 提供的连接 X 将始终是实例 #1 的服务器。

如果您决定在多个实例上运行应用程序,则与内部(即实例内部 ASP.NET 内部)缓存相比,使用分布式缓存(即在实例外部)缓存是唯一的选择。

[已添加]下面是一个使用 Windows Azure 缓存的 .net 示例应用程序:https://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/

如果您希望使用MemCache@smarx您可以使用如下所述的解决方案:http://blog.smarx.com/posts/memcached-in-windows-azure

您需要

做的是设置一个分布式缓存,允许您在多个实例之间缓存数据。你可以为此使用 Azure 缓存(但它很昂贵!

设置缓存相当容易,只需遵循本指南:https://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/