bcairns/silverstripe-assetproxy

通过拦截404错误,尝试从远程主机获取缺失的资产文件。

安装: 86

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 2

类型:silverstripe-module

dev-master 2017-11-19 04:43 UTC

This package is auto-updated.

Last update: 2024-09-11 14:38:21 UTC


README

描述

通过拦截404错误,尝试从远程主机获取缺失的资产文件。目的是按需下载缺失的资产文件,无需对资产文件夹进行完全同步。

遗憾的是,默认情况下,这不会与SilverStripe的默认图像处理一起工作,因为这些处理不会生成图像标签/URL(如果图像不存在本地则需要这些标签/URL来触发404错误)。有两种方法可以使图像正常工作,请参阅使用说明下的方法。

与文件对象也存在类似的问题;模板表达式 `<% if $File %>` 如果文件不存在本地将返回false,因此建议使用类似 `<% if $File.ID %>` 的表达式来测试是否应该显示文件链接。

使用说明

安装模块后,在 _config.php 或 _ss_environment.php 中定义一个 ASSETPROXY_SOURCE 常量

define('ASSETPROXY_SOURCE','http://my-source-server.com');

方法1 - 自动图像处理

对于自动图像处理,需要用AssetProxy的扩展版本替换核心的 ImageImage_Cached

Injector:
  Image:
    class: AssetProxy_Image
  Image_Cached:
    class: AssetProxy_Image_Cached

这覆盖了使AssetProxy自动工作所需的方法(遗憾的是,这不能通过扩展来实现)。

方法2 - 使用Image Profiles模块

您可以使用此模块与 Image Profiles 模块结合使用,而不是替换核心的 Image 类(这可能与某些设置冲突),并使用模板代码如 $Image.Original$Image.ProfileName,这将始终输出图像标签并随后通过404处理触发下载。

此方法非常推荐,因为它具有其他好处,例如不处理主页请求中的图像操作(这可能会导致页面加载时间延迟)。然而,它确实需要修改模板中处理图像的方法。

建议的模块

  • Image Profiles - 使用可配置配置文件的一种“非阻塞”图像处理方法。如果您想使用上述方法2,则此模块是必需的。
  • 备份/恢复 - 在CMS中轻松下载/上传MySQL数据库转储文件。

使用这三个模块一起使用,可以实现环境同步的完美境界!轻松地从生产环境(或测试环境)同步数据库,任何缺失的图像和文件将自动按需显示。

已知问题

  • 如果源图像已更改(同时保留相同的文件名),新版本将不会替换旧版本。建议的解决方案是只需删除您本地的文件版本,并允许重新获取最新版本。

致谢