跳到内容

资源版本控制

编辑此页

您可以配置 Symfony 以将资源版本附加到资源 URL。这用于在长时间缓存资源的客户端进行更改后清除缓存。

如果您使用 Twig asset 函数来解析相对于公共 web 文件夹的图像文件名,然后将结果放入 imagine_filter,则查询字符串通常会被视为文件名的一部分,从而导致找不到该文件。

自 LiipImagineBundle 2.7 版本起,我们集成了 framework.assets.version 的配置设置。它从文件名中剥离版本,并将其附加到生成的图像 URL,以便找到文件并使用缓存清除。

自 LiipImagineBundle 2.13 版本起,我们集成了 framework.assets.json_manifest_path 的配置设置。清单文件用于查找实际文件的位置,并将版本控制字符串附加到生成的图像 URL,以便使用缓存清除。

缓存清除

如果您允许客户端缓存您的图像,则使用资源版本控制来清除图像缓存是有意义的。例如,在您更改了过滤器集的设置后,这可能会有所帮助。

如果您使用 framework.assets.version,请在该情况下更改资源版本。如果您使用 framework.assets.json_manifest_path,则在您的资源管道中重建清单。请注意,您的版本控制字符串可能会使用内容哈希计算。在这些情况下更改过滤器设置将不会清除之前的缓存。在这种情况下,请重命名您的过滤器,或在您的资源管道中使用不同的版本控制策略,以确保每次构建都有新的哈希。如果您不使用 Symfony 资源版本控制,请设置 liip_imagine.twig.assets_version 参数。请注意,您仍然需要清除/刷新缓存的图像才能更新它们,资源版本仅与 HTTP 缓存相关,而与 LiipImagineBundle 缓存无关。

这种方法适用于已更改的过滤器集,但不适用于对单个图像的更改。对于这些情况,最好的方法是在文件名中进行版本控制,或使用 CacheResolveEvent 来更改图像的 URL。

故障排除

如果版本查询未正确处理,请检查容器构建期间的日志。如果您使用自定义资源版本控制,则可以使用版本字符串配置 liip_imagine.twig.assets_version 参数以进行查找。

要完全禁用 LiipImagineBundle 的资源版本处理,您可以将 liip_imagine.twig.assets_version 设置为 false。但请注意,如果您配置 Symfony 附加资源版本,您现在将无法将 asset Twig 函数与 imagine_filter 一起使用。

这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本