【问题标题】:How to store temporary cart data in cache using ASP.NET MVC如何使用 ASP.NET MVC 将临时购物车数据存储在缓存中
【发布时间】:2017-06-23 19:40:11
【问题描述】:

我正在使用带有 ADO.NET 和 MVC 的 N 层架构做项目 但不知道如何进行缓存

请给我一些建议

这是我添加到购物车中的临时数据:

var cartdata = '<li id="product-item">' +
                     '<img id="ud-product-image1" src=' + data["FilePath"] + data["FileName"] + ' alt="">' +
                               '<a hidden id="ud-product-image">' + data["FilePath"] + data["FileName"] + '</a>' +
                                '<button onclick="return Removepart();" id="btnclose" type="button" class="close">×</button>' +
                                '<div class="overflow-h">' +
                                    '<span id="ud-product-name">' + data["Name"] + '</span>' +
                                    '<small id="ud-cart-product-price">1 x $' + data["MRP"] + '</small>' +
                                '</div>' +
                    '</li>';
                    $("#mCSB_1_container").append(cartdata);

这里是每次的部分

  • 部分将附加 ::::
     <div class="shop-badge badge-icons pull-right">
                        <a href="#"><i class="fa fa-shopping-cart"></i></a>
                        <span id="countitem" class="badge badge-sea rounded-x"><div id="counter">0</div></span>
    
                        <div class="badge-open">
                            <ul id="total-item" class="list-unstyled mCustomScrollbar" data-mcs-theme="minimal-dark">
                                <div id="Empty-Cart-Image">
                                    <img src="~/Contents/img/empty_cart.jpg" style="height:150px;width:320px;" />
                                </div>
    
                                <!--// Actual Shopping Item Loaded here -->
                                <!-- Each time <li> portion will be added-->
                            </ul>
                            <div class="subtotal">
                                <div class="overflow-h margin-bottom-10">
                                    <span>Subtotal</span>
                                    <span class="pull-right subtotal-cost">$1200.00</span>
                                </div>
                                <div class="row">
                                    <div class="col-xs-6">
                                        <a href="shop-ui-inner.html" class="btn-u btn-brd btn-brd-hover btn-u-sea-shop btn-block">View Cart</a>
                                    </div>
                                    <div class="col-xs-6">
                                        <a href="shop-ui-add-to-cart.html" class="btn-u btn-u-sea-shop btn-block">Checkout</a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
    

    所以会添加临时购物车项目,但问题是当页面刷新时,数据会丢失

  • 【问题讨论】:

    • 想想你想在哪里存储数据。在 cookie、数据库等中。然后将其连接起来。

    标签: jquery asp.net asp.net-mvc-4 caching n-tier-architecture


    【解决方案1】:

    对于这个问题,你可能会得到比事实更多的意见,所以这是我的购物车应用程序的实现。

    我通常在数据库中创建 ShoppingCart 表。然后将购物车的 ID 保存在客户端浏览器的 cookie 中。 注意:对于 ShoppingCart Id,我更喜欢 GUID,这样恶意用户就无法轻易猜出其他购物车。

    此外,如果用户登录,我还将UserId保存在同一张表中,这样用户仍然可以在任何计算机上查看他/她的购物车,例如amazon.com。

    用户结帐成功后,我将商品从 ShoppingCart 表移动到 Order 和 OrderItem 桌子并清理购物车。

    如果您不想使用上述方法,您也可以存储在 Session State 中。使用 Session State 的缺点是,如果客户不小心关闭浏览器、App Domain 重启或 App Pool 回收,她/他将不得不重新开始。

    【讨论】:

    • 就个人而言,我也采用 cookie 方法,至少对于匿名购物车而言。属于经过身份验证的用户的购物车与他们的用户帐户相关联。但是,不鼓励使用会话的原因仅适用于使用 In Proc 会话的情况。如果您有像 SQL Server 这样的持久支持,那么这些都不是问题。
    • 我只忘了提到InProc 模式。它不应该在 StateServer、SQLServer 和像 Redis 缓存这样的自定义中出现。感谢克里斯指出。
    • 我不在会话中存储购物车信息的唯一原因是会话通常有一个相对较快的超时时间(默认为 20 分钟)。我可以独立设置一个带有购物车标识符的 cookie 2 周或更长时间,从而实现更加持久的购物车。此外,使用 GUID 是一个很好的步骤,但用户仍然可以使用 GUID 来寻找其他购物车。它比 int 更难,但并非不可能。您仍然应该加密 cookie 数据,当然,在您的 cookie 上使用带有 Secure 标志的 SSL。
    • 完全同意你的看法,但你能说明如何在里面使用缓存[]
    • @ManavPandya 您不能使用缓存来存储用户特定的数据,因为所有用户可以共享相同的缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2011-12-13
    • 1970-01-01
    相关资源
    最近更新 更多