跳转到主要内容

优化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 (28.3 kB 查看哈希值

上传时间 源代码

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面