每当用户替换/更新附加到新闻项目的图像时,上面的新闻项目视图和文件夹列表将在清漆缓存上被清除(更新) - 但附加的图像本身不是。
如何让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
操作下将其注册为默认视图。
<mysite>/news/news-item/image___de____news_scale
和<mysite>/news/news-item/image___de____even_smaller_news_scale
( de
也可能是en
,具体取决于语言)
答案 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 []