首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OutputCache忽略时间戳

OutputCache忽略时间戳
EN

Stack Overflow用户
提问于 2015-05-26 13:33:10
回答 2查看 200关注 0票数 0

我在MVC中使用OutputCache,但是当时间戳被附加到URL时,我很难缓存。

特别是jQuery的AJAX组件将_=21321423432添加到url的末尾。

每次我调用该操作的URL时,它总是进入该操作,而不是返回缓存的项。

我使用VarByCustom & VarybyParam元素根据登录用户以及开始日期和结束日期进行缓存。

Action

代码语言:javascript
复制
    [OutputCache(CacheProfile = "FeedCache")]
    public async Task<JsonResult> Feed(DateTime start, DateTime end)
    {
        //Do something

        return Json(result, JsonRequestBehavior.AllowGet);
    }

Config

代码语言:javascript
复制
<add name="FeedCache" duration="600" varyByParam="start;end" varyByCustom="user" location="Server" />

Global.asmx

代码语言:javascript
复制
public override string GetVaryByCustomString(HttpContext context, string custom)
{

    //
    // Vary by logged in user 
    //
    if (custom == "user")
    {

        return "user=" + context.User.Identity.Name;

    }

    return base.GetVaryByCustomString(context, custom);
}

我当时的印象是,这将专门为用户缓存&起始参数和结束参数,但事实并非如此。我遗漏了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-27 10:54:49

如果我在属性中指定OutputCache详细信息,而不是将其作为webconfig中的缓存配置文件,它就能工作。

Works

代码语言:javascript
复制
[OutputCache(Duration = 600, Location = OutputCacheLocation.Server, VaryByParam = "start;end", VaryByCustom = "user")]

不工作

代码语言:javascript
复制
[OutputCache(CacheProfile = "FeedCache")]

<add name="FeedCache" duration="600" varyByParam="start;end" varyByCustom="user" location="Server" />

我真的很想知道他们为什么有不同的行为..。

票数 0
EN

Stack Overflow用户

发布于 2015-05-26 13:42:24

or for dataTypes 'script' and 'jsonp'您可能返回一个JSON对象数组,因此尝试将cache:true添加到ajax选项中。它应类似于:

代码语言:javascript
复制
$.ajax({
        type: ...,
        url: ...,        
        cache: true,
        success: function (data) {
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30460087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档