bcairns / silverstripe-assetproxy
通过拦截404错误,尝试从远程主机获取缺失的资产文件。
Requires
- silverstripe/framework: >=3.1.0
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的扩展版本替换核心的 Image 和 Image_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数据库转储文件。
使用这三个模块一起使用,可以实现环境同步的完美境界!轻松地从生产环境(或测试环境)同步数据库,任何缺失的图像和文件将自动按需显示。
已知问题
- 如果源图像已更改(同时保留相同的文件名),新版本将不会替换旧版本。建议的解决方案是只需删除您本地的文件版本,并允许重新获取最新版本。
致谢
- 此模块受Drupal的 Stage File Proxy 模块的启发。