本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/nextcloud_speed_up/
将定时任务从ajax换到cron
输入以下命令在宿主机上增加cron任务:
crontab -u www-data -e
然后在出现的编辑框中复制粘贴下列命令
*/15 * * * * docker exec --user www-data nextcloud_nextcloud_1 php cron.php
列出cron任务:
crontab -u www-data -l
你可以直接在宿主机运行后面的命令,
docker exec --user www-data nextcloud_nextcloud_1 php /var/www/html/cron.php
还可以查看cron执行记录:
tail -f /var/log/cron.log
参考:
给出了几点建议
默认的nextcloud是Apache web, 我们将其换为nginx,通过搭配nextcloud-fpm和nginx两个docker完成。
实测用nginx可以解决页面卡死的问题。
参考:
查看是否是gzip传输
webdav的PROPFIND方法不会开启gzip
实测开启gzip传输后页面的加载速度很快,打开页面的感觉也打开大公司高度优化过的页面相同。
参考:
gzip module doesn’t handle all certain HTTP verbs/statuses
参考:
打开/www/wwwroot/你的nextcloud目录/config/config.php
,在其尾部添加以下代码
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
)
第1行为指定本地缓存为APCu,第2、3行为指定分布式缓存为redis
本优化过程中使用了多个docker,每次启动其ip地址都会变化。所以采用别名的方式来让docker自动确定其ip地址。
我们已经指定了别名,那么在conf文件中不要写ip地址,直接写别名就可以
在docker-compose.yaml中指定php-fpm别名:
nextcloud:
image: nextcloud:16.0-fpm
links:
- mysql
比如在nginx.conf中的一行:
fastcgi_pass nextcloud:9000;
另外,nextcloud会自动修改config.php中mysql服务器的地址,只要mysql docker container的别名是mysql