weboftalent / imageeditpartialcachebust
通过在编辑相关图像时清除这些数据对象来简化与图像关联的DataObjects文件夹的局部缓存查询。
Requires
- silverstripe/framework: ~3.1
This package is auto-updated.
Last update: 2024-08-27 07:33:22 UTC
README
此模块启用更新与正在编辑的图像关联的DataObjects的LastEdited值。这简化了例如由图像表示的页面文件夹的局部缓存,每个页面都有一个图像。如果缓存键基于文件夹中DataObjects的LastEdited值,则在编辑图像时(例如,使用FocusPoint模块重新聚焦)更改将不会显示,因为缓存键不知道子页面图像的LastEdited字段。
在使用局部缓存时确保图像更新在上面的场景中显示的选项如下
- 使用所有图像的最大(LastEdited)值 - 效率低下
- 在每个子页面周围有一个局部缓存查询,检查页面图像的LastEdited字段。这同样效率低下,因为每个渲染的子页面都执行一次数据库查询。
- 在文件夹对象中添加一个方法,根据数据库连接查询计算缓存键。
以略微昂贵的写入为代价,我们可以使用子页面的LastEdited日期作为缓存键,这将同时考虑图像编辑。
##配置 在任何模块的_config目录下的任意命名的.yml文件中配置要检查图像ID的类,例如imageeditpartialcachebust.yml。在'ImageEditCacheBust'下有三个键
- 阶段:默认配置中配置的阶段,默认为阶段和实时
- SiteTree:映射到包含图像ID的字段的ClassName嵌套数组
- DataObject:映射到包含图像ID的ClassName嵌套数组
以下示例中,每次重新聚焦图片时,如果MainImageID的值与正在编辑的图片的ID匹配,则每个PageWithImage数据对象的LastEdited字段将被更新为当前时间(从而破坏片段缓存)。类似地,对于SlidePage和Staff也是如此,但这次检查的是PhotoID字段。
---
Name: imageeditpartialcachebuster
After: framework/routes#coreroutes
---
ImageEditCacheBust:
Stages: ['Stage','Live']
SiteTree:
PageWithImage : 'MainImageID'
Product : 'ImageID'
SlidePage : 'PhotoID'
Staff : 'PhotoID'
DataObject:
GalleryImage : 'ImageID'
##模板示例使用以下相关模块部分中提到的模块,一个包含多个PageWithImage页面的文件夹的示例模板如下所示
<div class="row">
<div class="small-12 columns">
$BreadCrumbs
<h1>$Title</h1>
$Content
<% cached ID, LastEdited,Locale,$CacheKey('folderofpagewithimages','ChildPage') %>
<ul class="small-block-grid-2 medium-block-grid-3">
<% loop AllChildren %>
<li><div class="captionedImage">
<h3>$Title</h3>
<a href="$Link"><img class="shadowbox sliderImage" data-interchange="[$PortletImage.CroppedFocusedImage(390,260).URL, (default)],[$PortletImage.CroppedFocusedImage(236,157).URL, (small)],[$PortletImage.CroppedFocusedImage(236,157).URL, (medium)],[$PortletImage.CroppedFocusedImage(390,260).URL, (large)]"/>
<noscript><img src="$PortletImage.SetWidth(640).URL"></noscript></a>
</div>
</li>
<% end_loop %>
</ul>
<% end_cached %>
$Form
$PageComments
</div>
<% include TopAndLike %>
</div>
#相关模块缓存键辅助模块,https://github.com/gordonbanderson/weboftalent-cachekey-helper,允许通过单个数据库查询访问所有部分缓存键值,大大减少了检查部分缓存有效性时执行的查询数量。