TYPO3 8.1:仅在需要时生成图像

时间:2016-05-25 14:27:40

标签: typo3 typo3-8.x

目前我正在建立一个TYPO3网站(目前版本为8.1.2),它有很多非常大的图片。我正在使用扩展TYPO3引导程序包并根据我的需要对其进行修改,包括目前看起来像这样的图像视图帮助程序:

<picture>
    <source media="(min-width:1600px)" srcset="{f:uri.image(image: file)}">
    <source media="(min-width:1200px)" srcset="{f:uri.image(image: file, maxWidth: 1600)}, {f:uri.image(image: file, maxWidth: 3200)} 2x">
    <source media="(min-width:992px)" srcset="{f:uri.image(image: file, maxWidth: 1200)}, {f:uri.image(image: file, maxWidth: 2400)} 2x">
    <source media="(min-width:768px)" srcset="{f:uri.image(image: file, maxWidth: 992)}, {f:uri.image(image: file, maxWidth: 1984)} 2x">
    <img class="img-responsive" srcset="{f:uri.image(image: file, maxWidth: 768)}, {f:uri.image(image: file, maxWidth: 1536)} 2x">
</picture>

此设置的问题在于,如果尚未创建不同的文件,例如如果在添加新图像后第一次查看页面,则TYPO3需要进行大量的数字运算才能生成不同大小的图像的所有不同版本,并且需要太长时间(超过一分钟)。

所以,我正在寻找的是两种可能的解决方案之一:

  1. 一种告诉TYPO3尽可能晚地呈现特定图像的方法(即当浏览器请求该特定文件时,而不是当TYPO3呈现该页面时)或

  2. 一种使用ajax仅请求实际需要的图像大小的方法,例如:将我的ViewHelper修改为以下内容:
    <img data-uid="{file.propertiesOfFileReference.uid}">
    然后让一些javascript代码确定我实际需要的大小并以恰当的大小请求图像(对于缓存目的,可能以200px的步长)。 js-part应该很容易做到,但我不知道如何实现typo3-part。关于typo3和ajax在不同的网站上有一些解释,但我不知道最近这些是什么以及实现我需要的,我必须调用一个为我渲染图像的视图助手,以及我不知道该怎么做。

  3. 有人能指出我正确的方向或告诉我这两种解决方案中的一种是否可行?

1 个答案:

答案 0 :(得分:0)

将会有第三个解决方案,即创建一个调度程序作业,该作业将在页面重新加载之前“缓存”这些图像。您甚至可以使用FAL来跟踪图像是否以某种方式被操纵并刷新缓存。选择要缓存哪些图像有不同的方法,但最简单的方法可能是强制编辑器将所有要使用的图像放在一个特定的文件夹/文件挂载中(当然还有子文件夹),而cron作业只会通过它们并生成所需的所有尺寸。