优化Plone内容图片以供Web使用
项目描述
简介
此Plone插件执行(无损)图像内容类型的优化,使用外部进程。
工作原理
您的网站用户将正常加载图像内容,但加载的数据将来自执行 图像无损转换 的外部优化软件(必须位于服务器上)。
这样最终结果通常是一个更小的图像,由浏览器快速加载。
默认情况下,添加此插件是不够的。您必须包含服务器上安装的所有支持的软件(或仅限制为要使用的软件)。
要完成这个任务,请在您的buildout配置中包含一个适当的zcml文件。
[instance] ... eggs = Plone ... collective.optimage zcml = ... collective.optimage:wantedoptimizator1.zcml collective.optimage:wantedoptimizator2.zcml ...
所有 wantedoptimizatorX 条目必须是以下支持软件之一。示例:
zcml = collective.optimage:jpegoptim.zcml collective.optimage:optipng.zcml
要包含所有内容(不包括pngout),只需包含“all.zcml”。
支持的软件
目前,此产品支持以下命令行工具
- jpegoptim
用于JPEG优化 - http://freecode.com/projects/jpegoptim
- jpegtran
用于JPEG优化 - http://jpegclub.org/jpegtran/
- gifscicle
用于GIT优化 - http://www.lcdf.org/gifsicle/
- optipng
用于PNG优化 - http://optipng.sourceforge.net/
- pngcrush
用于PNG优化 - http://pmt.sourceforge.net/pngcrush/
- pngout(慢)
用于PNG优化 - http://advsys.net/ken/util/pngout.htm
添加您自己的
如果您想为额外的软件提供支持,您可以在自己的产品中使用ZCA。您需要为IOptimageProvider接口提供一个名为的适配器。
示例
<adapter name="yournewsoftware" for="plone.app.blob.interfaces.IATBlobImage zope.publisher.interfaces.browser.IHTTPRequest" provides="collective.optimage.interfaces.IOptimageProvider" factory="yout.products.module.YourSoftwareAdapter" />
最后,您的适配器类将类似于以下内容
from zope.interface import implements from collective.optimage.interfaces import IOptimageProvider class YourSoftwareAdapter(object): """Optimize using yournewsoftware""" implements(IOptimageProvider) for_image = 'jpeg' def optimize(self): // do stuff, calling external process
请注意,您必须填写for_image,提供您想用插件处理的图像类型。
技巧和已知问题
命令行工具位置
目前,此产品将尝试简单地调用上述所有软件来运行。如果运行Zope进程的用户没有这些程序,您可能需要手动指定它们的位置。如果软件已手动安装(例如:如果您已手动下载并安装了它,但不是系统范围内的buildout安装),则也是如此。
要完成此操作,请提供一个名为“SOFTWARENAME_PATH”的环境变量。示例
[instance] ... environment-vars = ... JPEGOPTIM_PATH /opt/local/bin/jpegoptim
内容类型
目前,Plone图像内容类型是唯一支持的类型。不幸的是,Plone新闻条目尚未使用Zope BLOB支持,因此它将不会获得任何优化。
性能
由外部进程执行的操作是同步的,因此会阻塞Zope线程。当编辑提供新图像(或修改现有图像)时,这将降低您的站点性能。
您可以通过调整配置选项来使它们更快(但效率更低)。
关于性能(再次强调)
目前,优化是在图像在Plone上加载后进行的。在图像源更改后触发一个事件,然后图像被放置在临时文件中并处理。之后,将加载优化后的图像。
这也会对所有缩略图图像版本进行。
这是低效的,因此可能会在未来更改,但这是我找到的唯一不需要猴子补丁Plone的方法。
变更日志
0.1.0 (2012-06-30)
初始版本
项目详情
collective.optimage-0.1.0a.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 73b091df053b53118df0632daa8e180deb1d6d5bae25ecd39b0478c034fccc2c |
|
MD5 | 02c490b7dd6c7276f390665779c16bce |
|
BLAKE2b-256 | 92fc6e2d505ec65927118fe4f3627d621c9f2109f6c4f7ec46de68cbfbe8d7b7 |