找到561个回复 (用户: 无名啊)
@老虎会游泳,关于图片在线压缩,我打算后端主用
PHP
+ffmpeg, avifenc, heif-enc
等外部命令主要考虑
- 感觉
PHP
像林子通用语言,方便交流,请教也更容易得到回复ffmpeg
可以读取很多格式和图像处理,命令行语法也比API
简单易懂得多。不支持的格式还可通过管道,由其它命令流式处理。大体流程设计
PHP
接到原图链接,进行安全检测:
- 链接的
host:port
是否在白名单内?(防localhost
和乱下违法文件)- 是否滥用?(有办法识别是哪个
hu60
用户的请求吗?)下载原图响应头
若存在转换后缓存(暂定总缓存
1GB
),且响应头时间和本地记录一致,则提供,然后结束若无原图缓存,或响应头时间比本地新,则下载图片,然后检测:
文件大小(下载前检测)、图片类型
宽高、像素数(防炸内存)
是否动态(
ffmpeg, dwebp
都不支持动态webp
……)转换图片,提供,结束
问题
主要流程中,哪里可能会出现被攻击的弱点吗?
『转换图片』应该由
PHP
在请求中去处理,还是提交给外部独立应用去处理(PHP
或js
轮询结果)?需要考虑『存在多个请求时,如何更有效利用服务器资源』吗?如:
不能一股脑同时转换所有图片,需要能设定
worker
数能根据优先级转换。越高的优先级,应该:
近期该用户请求更少(能服务更多用户)
图片更小(使所有用户总等待时间更少)
图片较新(近期更可能被其他用户使用)
……
@老虎会游泳,感觉可以和
viewer
作者协调下,去掉$(document).ready()
你也说多个
$(document).ready()
执行顺序不定,不利于后面脚本按顺序执行
@老虎会游泳,不对噢,
viewer
加了defer
,那就是你先执行
$(document).ready()
,然后解析完DOM后,viewer
再执行$(document).ready()
。触发
DOMContentLoaded
后,你先绑定onclick
,再由viewer
绑定?所以,你的也应该加上
defer
?
@老虎会游泳,你的插件排在
viewer
之后,并且也用$(document).ready()
的话,是不是就能在viewer
绑定onclick
后执行了?