Opengraph - 共享时自动清除缓存

时间:2015-09-01 07:44:32

标签: asp.net facebook facebook-graph-api opengraph httpmodule

我在.NET应用程序中自动清除facebook opengraph缓存有问题。我希望它能像那样工作:

  • 用户点击Facebook上的分享,并在帖子内容中使用某个网址
  • Facebook通过HttpModule重新刷新数据,我在其中注册了事件httpApp.BeginRequest += new EventHandler(context_BeginRequest);其中

    void context_BeginRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.UrlReferrer != null && HttpContext.Current.Request.Url != null)
        {
            var urlReferrer = HttpContext.Current.Request.UrlReferrer.ToString();
            var urlDestination = HttpContext.Current.Request.Url.ToString();
    
            if (urlReferrer.Contains("facebook"))
            {
                 var request = (HttpWebRequest)WebRequest.Create("https://graph.facebook.com");
    
                 var postData = "id=" + urlDestination;
                 postData += "&scrape=true";
                 var data = Encoding.ASCII.GetBytes(postData);
    
                 request.Method = "POST";
                 request.ContentType = "application/x-www-form-urlencoded";
                 request.ContentLength = data.Length;
    
                 using (var stream = request.GetRequestStream())
                 {
                     stream.Write(data, 0, data.Length);
                 }
            }
        }
    }
    
  • Facebook分享了更新的内容


    但事实并非如此。我测试了我的POST请求,它在单独的项目中执行时工作正常(我检查最后一次刮除facebook debugger的日期,如果它是新的我认为没问题)。

    当我尝试使用HttpModule时,在发布我的URL后 - 日期没有改变,旧值仍然存在。

    我看到一些不一致,因为rescrape需要几秒钟才能完成,但是在发布后在Facebook旧内容立即出现。


编辑: 我发现,当链接在Facebook上共享并且它已经被删除时,Facebook就不会发出请求,因为它在缓存中。所以我上面提到的解决方案无效。它必须在更改数据后重新刷新 - 而不是在共享时。

0 个答案:

没有答案