rosell-dk/webp-on-demand
为支持WebP的浏览器提供自动生成的WebP图像,而不是jpeg/png
Requires
- rosell-dk/webp-convert: ^1.1.0
- rosell-dk/webp-convert-and-serve: ^0.4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.11
- phpunit/phpunit: 5.7.27
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-10 21:39:16 UTC
README
这个库现在是WebP Convert的一部分,因此已过时!
这是为支持WebP的浏览器(例如Google Chrome)自动提供WebP图像而不是jpeg/png的解决方案。
一旦设置,它将自动转换图像,无论它们如何引用。例如,它也可以在CSS中引用的图像上工作。由于该解决方案不需要对HTML进行任何更改,因此它可以轻松集成到任何网站/框架中(最近在wordpress.org上发布了一个Wordpress适配器 - 它也在github上)
注意:这个库很快将成为WebP Convert的一部分(即已弃用)
概述
设置由以下部分组成
-
重定向规则,将JPG/PNG图像重定向到PHP脚本。
-
PHP脚本,通过调用此库的WebPOnDemand::convert()方法提供转换后的图像。
-
WebPOnDemand::convert()。检测是否可以提供现有的转换后的图像。如果可以,则提供它(除非原始图像已被修改)。否则,它将使用webp-convert-and-serve库转换图像。
要求
- Apache或LiteSpeed Web服务器。也可以与NGINX一起使用。文档在路线图上。
- PHP >= 5.6(我们只测试到5.6,但应该也可以在5.5上工作)
- 至少有一个webp-convert转换器工作(它们有不同的要求)
安装
前两个步骤是您是否打算使用composer。 不使用composer? - 跟随我!
1. 使用composer要求此库
composer require rosell-dk/webp-on-demand
2. 创建脚本
创建一个名为webp-on-demand.php的文件,并将其放置在webroot中,或您喜欢在您的Web应用程序中的任何位置。
以下是一个启动的简单示例
<?php require 'vendor/autoload.php'; use WebPOnDemand\WebPOnDemand; $source = $_GET['source']; // Absolute file path to source file. Comes from the .htaccess $destination = $source . '.webp'; // Store the converted images besides the original images (other options are available!) $options = [ // UNCOMMENT NEXT LINE, WHEN YOU ARE UP AND RUNNING! 'show-report' => true // Show a conversion report instead of serving the converted image. // More options available! ]; WebPOnDemand::serve($source, $destination, $options);
3. 添加重定向规则
在您想要webp-on-demand进行其魔法的目录中,将以下重写规则放置在.htaccess文件中
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect images to webp-on-demand.php (if browser supports webp)
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteRule ^(.*)\.(jpe?g|png)$ webp-on-demand.php?source=%{SCRIPT_FILENAME} [NC,L]
</IfModule>
AddType image/webp .webp
如果您已将webp-on-demand.php放置在子文件夹中,您需要相应地更改重写规则。
4. 验证它是否工作
浏览到一个JPEG图像。您应该看到一个转换报告而不是图像。希望您得到成功。否则,您需要连接到云转换器或尝试满足cwebp、gd或imagick的要求。您可以在webp-convert的GitHub页面上了解更多关于可用选项的信息
一旦成功转换,您就可以在脚本中取消注释“show-report”选项。
它应该可以工作了,但要绝对确定
- 使用Google Chrome访问您的网站上带有图像的页面。
- 右键单击页面并选择“检查”
- 单击“网络”选项卡
- 重新加载页面
- 在列表中找到一个jpeg或png图片。在“类型”列中,应该显示“webp”。图片上还应有一个X-WebP-On-Demand头。
5. 自定义和调整
基本自定义是通过在$options
数组中设置选项来完成的
- 查看webp-on-demand特定选项的API。
- 查看webp-convert以获取转换选项。
- 查看webp-convert-and-serve以获取关于如何处理失败响应的选项。
其他调整在docs/tweaks.md中描述
故障排除
重定向规则似乎不起作用
如果图片既没有被路由到转换器也没有404错误,这意味着重定向规则没有生效。这种情况的常见原因包括:
- 可能你的.htaccess中存在其他规则干扰了这些规则?
- 可能你的网站配置为使用Apache,但已经配置为使用Nginx来服务图片文件。那么你需要重新配置你的服务器设置。或者创建Nginx规则。这里有一些示例。
- 可能服务器没有配置为允许.htaccess文件?尝试在.htaccess文件顶部插入垃圾内容并刷新。现在你应该看到一个内部服务器错误页面。如果没有,你的.htaccess文件被忽略了。你可能需要在虚拟主机中设置AllowOverride All。更多帮助请查看这里。