0

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

我怎样才能使 plone.app.caching 不仅清除/更新,而且还清除/更新<mysite>/news/and下的<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,即使在取决于所选语言的更复杂的 URL 下,图像的 URL 也可用:<mysite>/news/news-item/image___de____news_scale并且<mysite>/news/news-item/image___de____even_smaller_news_scalede也可能en取决于语言)

4

1 回答 1

1

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

由于 raptus.linguaplone,plone.app.caching 不知道图像的自定义 url。所以你必须创建自己的适配器来实现IPurgePaths你的newsitems

像这样的东西应该可以解决问题:

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

于 2014-01-10T16:57:09.387 回答