当前位置: 首页 > 知识库问答 >
问题:

为什么要缓存操作结果?

孙夕
2023-03-14

我有一个动作,生成一个密码重置链接,并电子邮件给用户

public ActionResult SendResetPasswordEmail(string userName)
{
    var webUser = LoadUser(userName);
    if (webUser != null)
    {
        var token = WebSecurity.GeneratePasswordResetToken(webUser.UserName);
        emailSender.SendPasswordResetEmail(webUser, token, resetAction);
        return new HttpStatusCodeResult(HttpStatusCode.OK);
    }
    return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No user found with username: " + userName);
}

是什么导致web服务器决定内容不变并返回HTTP 304?

我知道有个办法

https://stackoverflow.com/a/18620970/141172

Request GET /Companies/SendResetPasswordEmail/?userName=ej HTTP/1.1
X-Requested-With    XMLHttpRequest
Accept  */*
Referer http://local:6797/Companies
Accept-Language en-US
Accept-Encoding gzip, deflate
User-Agent  Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Host    localhost:6797
DNT 1
Connection  Keep-Alive
Cookie  __RequestVerificationToken=sNOBS6qz32LtnJpLWgHHELhaE44DfIVE1LSMUgjzHjcwsvxlUFa4lOSyA5QeB8keLXYL08Psjg29CRI7W73uHLJy6A81; .ASPXAUTH=DAF8AF47E955F723EE9438866BE1B4BFBF91BA01912EF087824F03581DBCA05A4AECA01373FAF40DF0C4D5C17F17DEFA2F85C1B702988B7E0F750BFE19566FC711C7D6BD81D8F0B0ABD68AF5B3D9BA032286361F; ASP.NET_SessionId=5e2gcvkc2p3rji25z5emyqzd; HelixPlugins1.0=IEPlugin1.0
Response    HTTP/1.1 200 OK
Server  ASP.NET Development Server/11.0.0.0
Date    Thu, 03 Apr 2014 23:29:02 GMT
Cache-Control   private, s-maxage=0
Content-Length  0
Connection  Close

注意:我在上面将localhost更改为local,因为StackOverflow不允许发布包含localhost的链接:-)

浏览器是Internet Explorer10。

共有1个答案

龚奕
2023-03-14

IE默认缓存ajax响应,您需要通过将ajax对象的cache属性设置为false来显式地告诉它不要进行任何ajax缓存。

浏览器,如Chrome,会自动在您的请求中附加一个随机令牌,使其唯一。

 类似资料:
  • 本文向大家介绍为什么要用 redis ?为什么要用缓存?相关面试题,主要包含被问及为什么要用 redis ?为什么要用缓存?时的应答技巧和注意事项,需要的朋友参考一下 主要从“高性能”和“高并发”这两点来看待这个问题。 高性能: 假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓

  • 我了解到,使用服务工作者进行脱机缓存与浏览器缓存类似。如果是这样的话,那么为什么您希望使用服务工作者进行此缓存?浏览器缓存将检查文件是否被修改,然后从缓存中提供服务,通过服务工作者,我们将从代码中处理相同的事情。默认情况下,浏览器具有该功能,那么为什么更喜欢服务人员呢?

  • 我正在尝试将wildfly swarm版本从2017.10.0升级到2018.2.0.Final(当前最新版本) 在用最新版本运行服务器后,我的服务器日志上出现了以下错误 null InfinisPancustomizer.java 我不知道我应该做什么来删除最新的野蝇群错误?

  • 本文向大家介绍为什么要用 redis 而不用 map/guava 做缓存?相关面试题,主要包含被问及为什么要用 redis 而不用 map/guava 做缓存?时的应答技巧和注意事项,需要的朋友参考一下 缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个

  • 在Spark中,RDD默认是不缓存的。为了避免重复计算,当需要多次利用它们时,我们必须显示地缓存它们。GraphX中的图也有相同的方式。当利用到图多次时,确保首先访问Graph.cache()方法。 在迭代计算中,为了获得最佳的性能,不缓存可能是必须的。默认情况下,缓存的RDD和图会一直保留在内存中直到因为内存压力迫使它们以LRU的顺序删除。对于迭代计算,先前的迭代的中间结果将填充到缓存 中。虽然

  • 问题内容: 我在创建的Web API中执行以下操作: 通过以下方式通过Jquery Ajax调用完成对此Web服务的调用: 我已经看到一些开发人员以这种方式实现了先前的操作: 不过,得说GetProductsWithHistory()是一个相当长的操作。考虑到我的问题和上下文,使webAPI操作异步将给我带来什么好处? 问题答案: 在您的特定示例中,该操作根本不是异步的,因此您正在执行的操作是异步