更新新闻项目的附加图像不会从清漆中清除缩放图像,而只清除新闻项目视图

时间:2013-12-14 22:20:30

标签: plone varnish linguaplone plone-4.x

每当用户替换/更新附加到新闻项目的图像时,上面的新闻项目视图和文件夹列表将在清漆缓存上被清除(更新) - 但附加的图像本身不是。

如何让plone.app.caching不仅清除/更新<mysite>/news/<mysite>/news/news-item/,还清除<mysite>/news/news-item/image_news_scale<mysite>/news/news-item/image_even_smaller_news_scale下的图片?

背景:使用Plone 4.3.2我设置了一个自己的自定义图像比例,例如news_scale来自<mysite>/@@imaging-controlpanel。该比例用于在新闻项目中显示附加图像,例如,为<mysite>/news/news-item/image_news_scale。此外,我还有另一个自定义图像比例,如even_smaller_news_scale,用于文件夹列表,例如为<mysite>/news/news-item/image_even_smaller_news_scale。我通过<mysite>/portal_skins/custom创建了这些视图,并在<mysite>/portal_types/select_default_view操作下将其注册为默认视图。

我刚刚看到PS,因为我使用raptus.multilanguageplone,即使在更复杂的网址下也可以使用图片的网址,该网址取决于所选语言:<mysite>/news/news-item/image___de____news_scale<mysite>/news/news-item/image___de____even_smaller_news_scalede也可能是en,具体取决于语言)

1 个答案:

答案 0 :(得分:1)

如果您已经在plone.app.caching中正确配置了缓存清除,那么您会注意到默认情况下会正确清除newsitem / image_thumb和其他图像大小。

由于raptus.linguaplone,plone.app.caching不知道图片的自定义网址。 因此,您必须创建自己的适配器,为您的newsitems实现IPurgePaths

这样的事情应该可以解决问题:

from z3c.caching.interfaces import IPurgePaths


class ItemImagePurgePaths(object):
    """additional paths to purge not covered by 
    plone.app.caching default adapters i.e. ObjectFieldPurgePaths
    """
    implements(IPurgePaths)
    adapts(IYourConentType)

    def __init__(self, context):
        self.context = context

    def getRelativePaths(self):
        prefix = self.context.absolute_url_path()

        return [prefix + '/image____de____news_scale',
                prefix + '/image____de____even_smaller_scale']

    def getAbsolutePaths(self):
        return []    

另见https://pypi.python.org/pypi/plone.cachepurging