Nextcloud 21+ – 调整或关闭分块上传

关闭分块上传能提升处于高上传带宽环境时文件上传的性能表现,可根据自身需求选择是否启用。

  方法为在ssh连接中切换到 Nextcloud 所在目录,执行以下命令( www-data 是 Nextcloud 文件所属用户,根据自己的情况替换)

sudo -u www-data php occ config:app:set files max_chunk_size --value [分块大小的数值]

  命令后面加上自己想要设置的分块上传大小的值(单位为字节),此设置默认为 10485760 字节 (10 MB),如果处于高上传带宽环境时,可以尝试关闭分块上传以提升上传性能,方法为执行以下命令

sudo -u www-data php occ config:app:set files max_chunk_size --value 0

Adjust chunk size on Nextcloud side

For upload performance improvements in environments with high upload bandwidth, the server’s upload chunk size may be adjusted:

sudo -u www-data php occ config:app:set files max_chunk_size –value 20971520

Put in a value in bytes (in this example, 20MB). Set --value 0 for no chunking at all.

Default is 10485760 (10 MiB).

Note

Changing max_chunk_size will not have any performance impact on files uploaded through File Drop shares as unauthenticated file uploads are not chunked.

https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html#adjust-chunk-size-on-nextcloud-side

nextcloud下载超过1G的文件会中断的解决方法

如果你分享的文件超过1G大小,别人通过分享链接下载就会在下载到1G的时候中断。。。

经过仔细研究发现 在/usr/local/nginx/conf/nginx.conf 的http{}下添加

fastcgi_max_temp_file_size 10240m;

并设置允许下载文件的最大大小,就可以下载超过1G的文件。

估计是客户端下载带宽限制导致服务器php进程fread受限,在php最大执行时间内并没有读完完整文件;fastcgi_max_temp_file_size 则会不受客户端带宽限制,php进程能最大限度的将文件fread完并flush予服务器nginx;

记宝塔安装的nextcloud24重新生成缩略图

删除data/appdata_…..下面的preview文件夹

进入根目录cd /www/wwwroot/nextcloud/
sudo -u www /www/server/php/80/bin/php occ files:scan-app-data

重新生成前设置下config.php

‘preview_max_x’ => 1920, //默认4096

‘preview_max_y’ => 1920, //默认4096
相比默认的数值生成的缩略图会小很多

sudo -u www /www/server/php/80/bin/php occ preview:generate-all -vvv

Nextcloud 20-24 缩略图功能优化

本篇用于记录在 Nextcloud 20.0.4 使用过程中对略缩图功能的理解,本想放在上一篇里面作为优化的一部分,但发现描述起来文字很多,就新开一篇吧。

  Nextcloud 的略缩图生成方式和别的程序不同,在默认情况下,Nextcloud 会给一张图片生成多张不同分辨率的略缩图,在用户使用不同设备浏览的时候,根据用户设备屏幕的大小发送匹配屏幕大小的略缩图,详见管理员手册-Previews configuration

  这样带来的好处是用户平时能以更快的速度看到略缩图,因为 Nextcloud 只用把对应用户设备屏幕分辨率的略缩图文件直接传送给用户就可以。但是缺点也很明显,第一次浏览图片时生成略缩图的过程会占用大量的系统资源,如果服务器性能比较低,就会导致 Nextcloud 出现严重卡顿。

  此外,如果图片文件足够大,那么在默认配置下生成的略缩图甚至可能会达到 4K 分辨率,也就是说不仅占用大量资源生成略缩图,而且会出现略缩图占用的空间大小是源图片文件本身的两倍甚至更多的情况出现(因为一张图会对应很多张不同分辨率的略缩图)。

  针对这种情况,个人尝试过三种解决方法

解决方法1:关闭略缩图功能

  在关闭略缩图功能后,网页端浏览图片时就不会显示图片略缩图了,想知道图片内容只能点击图片加载原图,或者结合文件名在脑内回忆,体验很不好。关闭略缩图的方法为在 Nextcloud 目录下的 /config/config.php 中添加以下配置保存即可:

'enable_previews' => false,

解决方法2:设置允许生成的最大略缩图分辨率

  这个方法限制了最大略缩图分辨率,从而提高了略缩图的生成速度,配置方法为在 Nextcloud 目录下的 /config/config.php 中添加以下配置保存即可

'preview_max_x' => 1920,
'preview_max_y' => 1920,

  将 null 改成对应的分辨率数值,第一排是宽,第二排是高(数值根据自己需求设置)。在开启略缩图功能的情况下,在网页双击点开图片全屏查看的也是略缩图(而非原图,不清楚是因为 Nextcloud 在预览时只传送略缩图,还是因为屏幕不够大不足以让 Nextcloud 达到传送原图的条件),所以此处数值不宜设置的太小,设置的太小会导致想在网页端双击想查看大图时出现的却是一个很小略缩图。

解决方法3:使用 Preview Generator 插件

  Preview Generator 插件允许管理员在没有查看图片的情况下提前生成图片的预览图片文件,还可以设置任务每隔一定的时间自动扫描并生成新增图片的略缩图,使用方法如下:

  先在 Nextcloud 的应用中心找到 Preview Generator 插件安装启用,然后打开 ssh,切换到 Nextcloud 目录下,首先设置好 Preview Generator 插件生成的略缩图大小(此设置非必要,按照个人需求决定即可,此命令意思为使 Preview Generator 生成的略缩图宽度为:64、128 和 1024,可自行调整,具体说明见 Preview Generator的GitHub

sudo -u www php occ config:app:set --value="64 128 1024" previewgenerator widthSizes

  然后执行以下命令生成全部略缩图

sudo -u www php occ preview:generate-all -vvv

  如果图片文件较多,建议使用 screen 进行此操作(screen 可以在断开 ssh 的情况下继续执行命令)。如果只需要生成特定用户的略缩图文件,那就在命令后面加上用户名

sudo -u www php occ preview:generate-all -vvv [uesrid]

  生成了现有图片的略缩图后,添加 cron 任务,定时扫描新增的文件并生成略缩图(路径修改为自己的 Nextcloud 所在路径)

crontab -e -u www
*/10 * * * * sudo -u www php /nextcloud/occ preview:generate-all

  以上三种方式各有优势,根据自己的需求设置即可。


最后说下怎么删除略缩图

  所有用户的略缩图文件都位于:网站目录 /data/appdata_*/preview/

  先删除 preview 文件夹,然后到命令行终端切换到 Nextcloud 目录下执行

sudo -u www php occ files:scan-app-data

  此命令用于扫描指定目录的文件,如果不执行这条命令而只是删除 preview 文件夹,那 Nextcloud 就会认为删掉的那些略缩图仍然存在。关于 OCC 命令的详细解释可以查看管理员手册-Using the occ command