weboftalent/imageeditpartialcachebust

此包的最新版本(1.0.0)没有可用的许可信息。

通过在编辑相关图像时清除这些数据对象来简化与图像关联的DataObjects文件夹的局部缓存查询。

1.0.0 2016-01-18 16:35 UTC

This package is auto-updated.

Last update: 2024-08-27 07:33:22 UTC


README

##图像编辑后的局部缓存清除 Build Status Scrutinizer Code Quality Code Coverage Build Status codecov.io

Latest Stable Version Latest Unstable Version Total Downloads License Monthly Downloads Daily Downloads

Dependency Status Reference Status

codecov.io

此模块启用更新与正在编辑的图像关联的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,允许通过单个数据库查询访问所有部分缓存键值,大大减少了检查部分缓存有效性时执行的查询数量。