Bash 手册里,Alias 条目说:
Bash always reads at least one complete line of input, and all lines that make up a compound command, before executing any of the commands on that line or the compound command. Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new alias.
大意:
Bash 总是至少读取完整的一行(或多行,保证复合命令也读完整咯),接着立即扩展别名,最后再执行命令
另外,你的
ls -ll
需要用引号括起来,否则-ll
不是lll
的一部分,而是成为alias
的参数。如:$ alias lll='ls -ll'
@老虎会游泳,关于图片在线压缩,我打算后端主用
PHP
+ffmpeg, avifenc, heif-enc
等外部命令主要考虑
- 感觉
PHP
像林子通用语言,方便交流,请教也更容易得到回复ffmpeg
可以读取很多格式和图像处理,命令行语法也比API
简单易懂得多。不支持的格式还可通过管道,由其它命令流式处理。大体流程设计
PHP
接到原图链接,进行安全检测:
- 链接的
host:port
是否在白名单内?(防localhost
和乱下违法文件)- 是否滥用?(有办法识别是哪个
hu60
用户的请求吗?)下载原图响应头
若存在转换后缓存(暂定总缓存
1GB
),且响应头时间和本地记录一致,则提供,然后结束若无原图缓存,或响应头时间比本地新,则下载图片,然后检测:
文件大小(下载前检测)、图片类型
宽高、像素数(防炸内存)
是否动态(
ffmpeg, dwebp
都不支持动态webp
……)转换图片,提供,结束
问题
主要流程中,哪里可能会出现被攻击的弱点吗?
『转换图片』应该由
PHP
在请求中去处理,还是提交给外部独立应用去处理(PHP
或js
轮询结果)?需要考虑『存在多个请求时,如何更有效利用服务器资源』吗?如:
不能一股脑同时转换所有图片,需要能设定
worker
数能根据优先级转换。越高的优先级,应该:
近期该用户请求更少(能服务更多用户)
图片更小(使所有用户总等待时间更少)
图片较新(近期更可能被其他用户使用)
……
@老虎会游泳,已私信(好像公开也无所谓?)
@老虎会游泳,真的吗?Debian,谢谢老虎!
@老虎会游泳,或者,你直接限定楼层中图片高度呗(缩放显示)
@老虎会游泳,那你不怕点击到手麻嘛?
@老虎会游泳,你为嘛有点击加载的需求?
也是路上用流量刷林子,怕遇到流量刺客?
@老虎会游泳,作为“始作俑者”,我需求不大。你可以问问其他那十来个用户
@老虎会游泳,你想浏览时能点击加载?
@老虎会游泳,看来这应该也是最快最好的办法了
@老虎会游泳,开始各种卷了
不如从根头解决,只依赖用户设定的顺序?
@老虎会游泳,现在你加
setTimeout
解决了,再后来的脚本想在你之后执行,该咋办呢
@老虎会游泳,感觉可以和
viewer
作者协调下,去掉$(document).ready()
你也说多个
$(document).ready()
执行顺序不定,不利于后面脚本按顺序执行
@老虎会游泳,不对噢,
viewer
加了defer
,那就是你先执行
$(document).ready()
,然后解析完DOM后,viewer
再执行$(document).ready()
。触发
DOMContentLoaded
后,你先绑定onclick
,再由viewer
绑定?所以,你的也应该加上
defer
?
@老虎会游泳,你的插件排在
viewer
之后,并且也用$(document).ready()
的话,是不是就能在viewer
绑定onclick
后执行了?
@老虎会游泳,看来也用不了
async
属性,要保证按用户设定的脚本顺序执行
@老虎会游泳,研究这个咋会无意义呢?
现在你的代码,还是和
viewer
冲突