下一页CloudPi‘目标受众是家庭托管者,吸引用户的用例之一是自行托管自己的图片集。
这些用户的主要抱怨是画廊太慢。当您打开图库时,预览会实时生成,这会影响响应速度。一旦生成它们,下一次它将加载得更快。
当前的解决方案是使用Cron作业通过cron作业离线生成预览。 预览生成器应用 这样,当我们打开图库时就可以将其提取。
即使使用此应用程序,浏览图片通常也很慢。发生这种情况通常是由于以下原因
- 缺乏计算能力。单板电脑不是很强大。
- 预览尺寸配置错误(并且缺少相关文档)。
即使使用预览生成器,在Raspberry Pi上可能要花费数天甚至数周的时间才能为大型集合生成预览,这会使很多人失望。
另一个抱怨是,生成了太多的预览,因此预览文件夹经常占用比图片本身更多的空间。
尝试解决此问题的最明显的结果是注意到这样一个事实,即使我们的系统是多处理器,也仅使用一个CPU来生成预览,因此有大量未利用的可用资源。
首先,让’快速浏览Nextcloud预览系统。
预览如何运作
每次上传图片时,都会生成两个预览
- 小32×32预览。这是“文件”列表中的图标。

- 最大预览。这是单击时显示在浏览器中的大图。

最大预览大小默认为4096×4096,并且可以配置
occ config:system:set Preview_max_x--value 2048 occ config:system:set Preview_max_y--value 2048
这产生
root@293626d9121d:/var/www/nextcloud# ls -R data/appdata_ocn7c0nrnm7u/preview/* data/appdata_ocn7c0nrnm7u/preview/63405: 1365-2048-max.jpg 256-256-crop.jpg
还有其他一些预览不是默认生成的,而是由Nextcloud的其他部分使用的。除非它们是使用App预先生成的,否则它们将是即时生成的。
- 图库应用程序请求(js / thumbnail.js)
- 400×200 -> 384×256 / 256×常规缩略图为384(**)。
- 200×200 -> 256×171 / 171×文件夹缩略图为256,显示目录的前四个方形缩略图。

- 网格视图模式下的“文件”应用请求(js / filelist.js)
- 250×250 -> 256×256

(*)要求400×200,但后端将其取整为2的幂-> 384×256.这些仅是示例。
(**)取决于照片方向
预览生成器如何工作
我们可以看到我们需要一个配置正确的预览生成器,否则我们可能会生成无用的预览,因为它们将不被使用。
默认情况下,该应用会生成32种可能的尺寸×32到Max,这既浪费CPU,又浪费空间,因为正如我们刚刚看到的那样,’t be used.
root@293626d9121d:/var/www/nextcloud# ls -R data/appdata_ocn7c0nrnm7u/preview/* data/appdata_ocn7c0nrnm7u/preview/63405: 1024-1024-crop.jpg 171-256.jpg 256-384.jpg 2731-4096-max.jpg 64-64-crop.jpg 683-1024.jpg 1024-1536.jpg 256-256-crop.jpg 2731-2731-crop.jpg43-64.jpg 64-96.jpg
如果我们不这样做’为了避免这种行为,该应用程序允许我们配置要生成的大小,但是除非您在代码中进行挖掘,否则在任何地方都没有真正需要什么大小的文档。配置此设置
occ config:app:set预览生成器squareSizes--value="32256" occ config:app:set预览生成器widthSizes--value="256 384" occ config:app:set预览生成器heightSizes--value="256"
因此,我们最终要么抱怨抱怨使用的GiB比实际照片更多,要么天真地尝试使用不同的大小,并假定将在最有可能不使用时使用它们。
推荐配置
由于上述原因,我建议对SBC进行以下设置
occ config:app:set预览生成器squareSizes--value="32256" occ config:app:set预览生成器widthSizes--value="256 384" occ config:app:set预览生成器heightSizes--value="256" occ config:system:set Preview_max_x--value 2048 occ config:system:set Preview_max_y--value 2048 occ config:system:set jpeg_quality --value 60 occ config:app:set预览jpeg_quality--value="60"
我认为这些应该是预览生成器应用程序的默认设置。
root@293626d9121d:/var/www/nextcloud# ls -R data/appdata_ocn7c0nrnm7u/preview/* data/appdata_ocn7c0nrnm7u/preview/63405: 1365-2048-max.jpg 171-256.jpg 256-256-crop.jpg 256-384.jpg 64-64-crop.jpg
正确配置预览生成器可以使速度提高4倍,并节省大量的空间(请参见下面的结果)。
提议
为了尝试找到一种更有效地使用我们的CPU并提高低端设备性能的方法,我分叉Nextcloud和Previews Generator应用程序创建了一个概念验证实施,可以在其中进行一些测试。
我们不’对于小缩略图,可能仅用于最大预览,需要使用计算量大的过滤器,因此需要非常好的质量,因此该提案采用缩放功能而没有插值和并行生成,以尝试获得更好的结果。
使用这些修改,我能够在4核Raspberry Pi上实现5倍的速度提升,而在16核PC上实现10倍的速度提升,同时保持良好的图像质量。
如果与未配置的预览生成器进行比较,则Raspberry Pi的增益是20倍,PC的增益是50倍(请参阅Github链接)。

您可以在下面查看有关这些基准测试结果的更多详细信息 Github.
“最大预览。这是单击时显示在浏览器中的大图。”
==>>您是说播放幻灯片时显示的图片不是实际图片而是生成的图片?
如果是这样,那将是浪费力量和空间。
而且我了解为什么在家里使用光纤连接(在Rock 64上)时,显示图像会花费很多时间,’m away.
那是正确的。 IMO有很大的改进空间
我可以禁用最大预览以使其显示原始图片吗?将确保大量空间和生成时间…
对我来说很有意义,您可以在浏览器中查看生成的分辨率,如果愿意,可以下载完整分辨率。
太好了,非常感谢您和您所做的工作’做了。我将在docker容器上尝试一下,希望它也会加快速度。
让我们希望Rullzer将在官方应用程序中包含这些增强功能。 --
只是一个想法。运行php-fpm时,服务器会生成多个线程来生成缩略图。仍然非常慢。
仅当您浏览图库时才有并行请求,但是预览生成器仅使用一个线程(在我进行更改之前)。
你好,
我在哪里以及如何更改目录’s进行预览,不是每个目录都应显示为预览,否则此站点中只有2到3个特定目录!感谢您的帮助
您可以为您没有的文件夹添加一个.nomedia文件。’想要预览的预生成
十分感谢。那就是我一直在寻找的大约两个星期,终于解决了。
我不太确定我能理解上面的命令-
首先,我应该在“预览生成器如何工作”部分还是仅用于说明?
第二,当我进入FreeNAS nextcloud监狱并尝试运行occ config:app:set Previewgenerator squareSizes时–value=”32 256″我收到一个错误OCC:找不到命令。
我究竟做错了什么?在此先感谢您的帮助!
您可以在Nextcloud文档中阅读有关occ命令的信息。
在到Nextcloud监狱的ssh会话中:
光盘/ usr / local / www / nextcloud
运行所有命令,例如
sudo -u www php occ config:app:set Previewgenerator squareSizes –value =“ 32 256”
谢谢您的精彩帖子。但是,似乎还有另一个错误使Nextcloud变得超级慢:它正在尝试预览mp3-s,而仅需一分钟mp3即可预览。我有一个全新的Nextcloudpi设置(在Raspi 3上),使用webdav上传了带有几个mp3-s的目录,然后使用Nextcloud ios应用访问该目录,而无需单击任何文件。这些行显示在/var/log/apache2/nc-access.log中:
10.10.11.177– –[2019年7月21日:10:34:34 +0100]“GET /index.php/core/preview.png?file=body%20mind%20soul/bl%20purpose.mp3&x=576&y=768&a=1&mode=cover HTTP/2.0” 404 0 “-” “Mozilla / 5.0(iOS)Nextcloud-iOS / 2.23.7” ~126/126258422~
10.10.11.177– –[2019年7月21日:10:34:34 +0100]“GET /index.php/core/preview.png?file=body%20mind%20soul/bl%20ml%201of2.mp3&x=576&y=768&a=1&mode=cover HTTP/2.0” 404 0 “-” “Mozilla / 5.0(iOS)Nextcloud-iOS / 2.23.7” ~126/126590957~
10.10.11.177– –[2019年7月21日:10:34:34 +0100]“GET /index.php/core/preview.png?file=body%20mind%20soul/bl%20med.mp3&x=576&y=768&a=1&mode=cover HTTP/2.0” 404 0 “-” “Mozilla / 5.0(iOS)Nextcloud-iOS / 2.23.7” ~126/126603509~
10.10.11.177– –[2019年7月21日:10:34:34 +0100]“GET /index.php/core/preview.png?file=body%20mind%20soul/bl%20law%20of%20life.mp3&x=576&y=768&a=1&mode=cover HTTP/2.0” 404 0 “-” “Mozilla / 5.0(iOS)Nextcloud-iOS / 2.23.7” ~126/126610499~
〜126/126610499〜表示它运行了126秒(准确地说是126610499)
嗨,谢谢你。你应该报告
你好!
是否可以为.mp4甚至.gif之类的视频生成预览?
我使用的是nextcloudpi Webpanel中的cronjob,图片在使用rpi 4时确实很流畅。
在我的画廊中,我有4个装有图片的文件夹。但是应该再有3个包含视频和GIF的文件夹。
其中一个工作库文件夹有1个gif数据,甚至是预先生成的。我只是不明白为什么其他文件夹不是’t pre generated.
如果有人可以帮助我,那就太好了,我看到这个网站的评论真的很活跃!
泰语,祝您有美好的一天!
朱利安
你好,
请按照以下步骤操作:
//www.allerstorfer.at/nextcloud-install-preview-generator/
在Raspbian中:
sudo apt安装ffmpeg
将/ usr / bin / ffmpeg添加到您的env [PATH]
在/etc/php/7.3/fpm/php-fpm.conf中
很酷!谢谢,将应用设置为此处编写的“reset”预览缓存中,生成了以下文件:
/ preview / 1020200:
总共444
drwxrwxr-x 2 www-data www-data 4096年7月24日21:26。
drwxrwxr-x 13403 www-data www-data 274432 Jul 25 09:03 ..
-rw-rw-r–1 www-data www-data 128154 7月24日21:26 1080-1920-max.jpg
-rw-rw-r–1 www-data www-data 6133 Jul 24 21:26 144-256.jpg
-rw-rw-r–1 www-data www-data 9542 7月24日21:26 256-256-crop.jpg
-rw-rw-r–1 www-data www-data 14211 Jul 24 21:26 256-455.jpg
-rw-rw-r–1 www-data www-data 1618 7月24日21:26 64-64-crop.jpg
OLD预览文件夹更大,并且文件更少:
预览/ 1020200:
总计1228
drwxr-xr-x 2 www-data www-data 4096 2019年1月14日。
drwxrwxr-x 39159 www-data www-data 933888 7月24日14:00 ..
-rw-r–r–1 www-data www-data 309785 2019年1月14日1080-1920-max.jpg
-rw-r–r–1 www-data www-data 1279 2019年1月14日32-32-crop.jpg
我认为jpeg_quality的正确设置应该是
occ config:app:set预览jpeg_quality–value=”60″
我在这篇文章中概述了原因: //help.nextcloud.com/t/thumbnail-quality-setting-is-wrong-undocumented/56435/
基本上,您需要查看Nextloud源代码,以确保jpeg_quality的正确设置与Previewgenerator应用程序的正确设置不同。
非常感谢。固定的
非常感谢您追踪了为什么Nextcloud有时会非常痛苦地减慢SBC的速度’s. SBC’受到约束的硬件确实将揭示出明显的浪费,瓶颈和效率低下的地方。感谢您的所有杰出贡献,NachoParker!
谢谢,非常有见地!
我确实注意到在我的Nextcloud(不是NextCloudPi)实例上,1024×对于32个,要求1024个大拇指×文件列表中的32张图像。因此,使用您推荐的设置’仍在创建1024×即时显示1024个大拇指。这可以在某处配置吗?还是NextCloudPi与常规Nextcloud有所不同?在任何情况下,将1024添加到“ squareSizes”设置中,都不会即时创建任何拇指,因此’s great!
非常感谢。一世 ’ve总是给人一种印象,即使安装了预览生成插件,第一次打开文件夹时nextcloud仍会创建预览。但是我’从来没有时间研究它。
现在一切都加载得非常顺利!!!
您是否填写了报告,但报告了不同的图片尺寸?一世’ve只能找到用于并行预览生成的推送请求。由于许多用户会认为预览生成插件可以正确执行所有操作,因此大多数人永远不会想到进一步研究它。
感谢您的精彩报告。
如果你’在砖块上重新运行NC时,您可能需要考虑将浏览器缓存为缩略图,请参见 //github.com/nextcloud/documentation/pull/1609
谢谢–这对发电时间和响应能力产生了重大影响。
291/5000
非常感谢您提供本指南。我的Nextcloud可以在带有Celeron处理器的自制NAS上工作,其中的预览生成需要使用默认设置才能使用。这些设置极大地加快了预览的创建,尤其是从电话或Web访问中检索图像的速度。
我只是注意到是预览文件夹塞满了我的驱动器,而寻找解决方案将我带到了这里。谢谢你的写作!一项后续行动:我想从头开始,可以删除该预览文件夹,还是什么?
您可以删除文件夹并运行`occ files:scan-app-data`
I’我通常很好奇imageflow(//github.com/imazen/imageflow)与此处使用的设置相比效果更好。
谢谢so much for writing this up! This was causing me a lot of issues.
对于nc-previews-auto,它说,“您可以以分钟为单位指定夜间持续时间,或0 ”
我如何确定每晚什么时间开始该过程?我还有其他备份,需要错开这些工作。
这已经在github上的nextcloud上滚动了吗?我认为没有人会反对这些变化,所以您可以以某种方式处理它吗?我们所有人都在评论此帖子,我们都在等待您的更改-最好在管理员用户界面中设置用于并行处理的核心号码,这也是最好的选择。
计划对Nextcloud 18进行一些更改。此应用程序更改已针对CR开放,但它们已经与NextCloudPi一起提供。
令人印象深刻的改进!
这应该是Nextcloud的默认配置的一部分。当前的默认设置使图库在标准PC上也几乎无法使用。
谢谢!
优秀的文章!任何人都可以复制这些步骤以合并“预览生成器更改”以自动化的方式?还是必须手动完成?先感谢您,
下一页CloudPi默认包含更改。此外,PR仍在主应用程序中挂起。
琐碎的新手问题,但…您需要安装imagemagick吗
//packages.debian.org/buster/imagemagick
使php-imagick工作?
如果是这样,是否需要对imagemagick进行特殊配置?
谢谢!
你好,
一直在寻找增加幻灯片图像之间延迟时间的方法。我发现从图库浏览幻灯片时如何做到这一点,但是图像不如照片幻灯片中的图像大。如果我只能合并照片幻灯片和画廊幻灯片的最佳特征,那我会很高兴的(直到下一个难题解决了)。
谢谢
I’已检查(实际调试过)lib / private / Preview / Generator.php的最后一个稳定的Nextcloud 17.0.2的源,并在calculateSize()方法中找到了以下几行:
—-
如果($ height!== $ maxHeight&&$ width!== $ maxWidth){
/*
*缩放至最接近的四次方
*/
$ pow4height = 4 ** ceil(log($ height)/ log(4));
$ pow4width = 4 ** ceil(log($ width)/ log(4));
//最小大小为64
$ pow4height = max($ pow4height,64);
$ pow4width = max($ pow4width,64);
—-
因此实际上只有4的幂才有意义:64、256、1024、4096
既然我们不知道’想要4096,因为它’太大,并且由于我的浏览器上的Android应用程序和Web应用程序至少要求256×全页预览中256张图像和1024宽/ 1024高’d建议设置以下内容:
occ config:app:set预览生成器squareSizes–value=”256 1024″
occ config:app:set预览生成器widthSizes–value=”256 1024″
occ config:app:set预览生成器heightSizes–value=”256 1024″
无论如何,在这些设置中,所有其他尺寸都具有Foure的力量’t make sense
完全正确,但我仍然建议生成64
您好,感谢您为我指出这个话题。
在Nextcloud 16.x中,我使用此Previewgenerator配置生成与从Nextcloud Files应用程序,Nextcloud Gallery和Android Nextcloud App本身创建的预览文件完全相同的预览文件:
occ config:app:set预览生成器squareSizes–value=”256 1024″
occ config:app:set预览生成器widthSizes–value=”384 2048″
occ config:app:set预览生成器heightSizes–value=”256 2048″
occ config:system:set Preview_max_x–value 2048
occ config:system:set Preview_max_y–value 2048
最好的祝福,
塞巴斯蒂安
有没有一种方法可以只保留某个预览并在生成预览后删除原始文件?场景:各种用户上传他们的图片以共享,但是存储容量有限并且无法观看e。 G。浏览器中的1024px版本完全可以。
将MariaDB用作默认数据库时,是否有其他方法?
我希望看到预览仅使用32/64进行图标预览,并跳过所有其他预览。
如果用户单击以查看完整照片,则应显示原始大小。有谁知道如何实现?
在我看来,这个预览版问题确实似乎是NC的致命弱点。要在预览生成时浪费额外的10-25%+的存储空间,更不用说创建文件的时间了。
在“文件”列表中单击图像时,将立即下载图像文件。可以更改此设置,以便打开图像大预览(幻灯片),就像在“照片”中单击图像一样吗?
我需要什么尺寸的android应用程序?
看起来这些命令在nexcloud服务器的版本20上不再起作用。
任何的想法?
没关系,让它起作用。