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

Umbraco 使用ContentService API删除文档不会刷新缓存,umbraco,umbraco7,Umbraco,Umbraco7,在Umbraco 7中,我使用ContentService API插入、更新或删除文档。插入或更新文档后,会立即显示正确的内容,但删除后,由于缓存的原因,可以查看删除的数据。要清除缓存,我从App_数据中删除DistCache文件夹的数据 如何以编程方式刷新缓存 这是我的密码: 通常,删除后不必手动更新缓存。您可以检查日志文件中是否存在可能的错误 如果要手动刷新,可以调用以下方法 umbraco.library.RefreshContent(); 注意:在具有多个节点的Umbraco实例中,该

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

如何以编程方式刷新缓存

这是我的密码:


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

如果要手动刷新,可以调用以下方法

umbraco.library.RefreshContent();
注意:在具有多个节点的Umbraco实例中,该方法非常慢

正如@Harvey在评论中所说,使用service.MoveToRecycleBin是有效的 好的该方法将取消发布内容,然后将其移动到 回收站

最终代码:


如果在“内容”选项卡旁的省略号上单击鼠标右键,然后单击“重新发布整个网站”,也可以清除Umbraco后台办公室中的缓存。从技术上讲,这不是一种程序化的方式,但它很快/简单,并且可以完成任务

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

这是传统图书馆,你不应该使用它@Ali尝试先取消发布元素,然后删除它。我现在无法测试它,但“取消发布”事件将触发所有缓存刷新程序,以从已发布内容缓存中删除此项目。谢谢@Mark。我会查日志的。谢谢你@MarcinZajkowski。我将对此进行测试。我相信更新后的方法可以在ContentService上找到:ApplicationContext.Current.Services.ContentService.com;您最好调用service.MoveToRecycleBin-此方法将首先取消发布内容,然后将其移动到回收站。我相信删除只会直接从数据库中删除它。谢谢@Harvey,它工作得很好。不幸的是,这不是一个好方法,因为重新发布整个网站不会影响网站应用程序数据的DistCache文件夹。
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!";
}
    https://i.stack.imgur.com/MIUOh.jpg