使用ContentService API删除文档不会刷新缓存

时间:2017-10-01 17:27:14

标签: umbraco umbraco7

在Umbraco 7中,我使用ContentService API来插入,更新或删除文档。插入或更新文档后,会立即显示正确的内容,但删除后,由于缓存,可以查看删除的数据。要清除缓存,我会从DistCache删除App_data文件夹的数据。

如何以编程方式刷新缓存?

这是我的代码:

public string DeleteStudent(int studentID)
{
    IContentService service = ApplicationContext.Current.Services.ContentService;
    if (studentID != 0)
    {
        IContent student = service.GetById(studentID);

        if (student != null && student.ContentType.Alias == "dtStudent")
        {
            service.Delete(student);
            return "Done!";
        }
    }
    return "Error!";
}

3 个答案:

答案 0 :(得分:1)

通常,您不必在删除后手动更新缓存(您可以检查日志文件中是否存在可能的错误)

如果您想进行手动刷新,可以通过调用以下方法

来完成
umbraco.library.RefreshContent();

注意:在具有许多节点的Umbraco实例中,该方法非常慢

答案 1 :(得分:0)

  

正如@Harvey在评论中所说,使用service.MoveToRecycleBin可行   精细。该方法将取消发布内容,然后将其移动到   回收站。

最终代码:

public string DeleteStudent(int studentID)
{
    IContentService service = ApplicationContext.Current.Services.ContentService;
    if (studentID != 0)
    {
        IContent student = service.GetById(studentID);

        if (student != null && student.ContentType.Alias == "dtStudent")
        {
            service.MoveToRecycleBin(student);
            return "Done!";
        }
    }
    return "Error!";
}

答案 2 :(得分:0)

如果右键单击内容选项卡上的省略号,然后单击"重新发布整个站点",您也可以清除Umbraco后台办公室中的缓存。这在技术上不是一种程序化的方式,但它快速/简单并完成工作!

    https://i.stack.imgur.com/MIUOh.jpg