feat: OnlyOffice Standalone integration with S3 direct URLs
✅ ЧТО СДЕЛАНО: - Поднят новый standalone OnlyOffice Document Server (порт 8083) - Настроен Nginx для доступа через office.clientright.ru:9443 - Создан open_file_v3_standalone.php для работы с новым OnlyOffice - Реализована поддержка прямых S3 URL (bucket публичный) - Добавлен s3_proxy.php с поддержкой Range requests - Создан onlyoffice_callback.php для сохранения (базовая версия) - Файлы успешно открываются и загружаются! ⚠️ TODO (на завтра): - Доработать onlyoffice_callback.php для сохранения обратно в ОРИГИНАЛЬНЫЙ путь в S3 - Добавить Redis маппинг documentKey → S3 path - Обновить CRM JS для использования open_file_v3_standalone.php - Протестировать сохранение файлов - Удалить тестовые файлы 📊 РЕЗУЛЬТАТ: - OnlyOffice Standalone РАБОТАЕТ! ✅ - Файлы открываются напрямую из S3 ✅ - Редактор загружается БЫСТРО ✅ - Автосохранение настроено ✅ (но нужна доработка callback)
This commit is contained in:
560
NEXTCLOUD_ЛАЙФХАКИ_УСКОРЕНИЯ.md
Normal file
560
NEXTCLOUD_ЛАЙФХАКИ_УСКОРЕНИЯ.md
Normal file
@@ -0,0 +1,560 @@
|
||||
# 🚀 NEXTCLOUD - ЛАЙФХАКИ УСКОРЕНИЯ
|
||||
|
||||
## 🎯 ЦЕЛЬ: Работать как Google Drive
|
||||
|
||||
---
|
||||
|
||||
## 💡 ПРЕДЛОЖЕНИЯ ДЛЯ ОБСУЖДЕНИЯ
|
||||
|
||||
### 1️⃣ **HTTP/2 Push и Preload** ⚡⚡⚡
|
||||
**Что:** Предзагрузка ресурсов до того как браузер их запросит
|
||||
|
||||
**Реализация в Nginx:**
|
||||
```nginx
|
||||
location ~ \.php$ {
|
||||
# Предзагрузка JS/CSS
|
||||
add_header Link "</core/css/styles.css>; rel=preload; as=style";
|
||||
add_header Link "</core/js/main.js>; rel=preload; as=script";
|
||||
|
||||
# HTTP/2 Push
|
||||
http2_push /core/css/styles.css;
|
||||
http2_push /core/js/main.js;
|
||||
}
|
||||
```
|
||||
|
||||
**Ожидаемый эффект:** +30-50% скорость загрузки интерфейса
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ **Separating Data Directory на SSD** 💾⚡⚡⚡
|
||||
**Что:** Переместить БД Nextcloud на SSD диск (если сейчас на HDD)
|
||||
|
||||
**Проверка текущего диска:**
|
||||
```bash
|
||||
docker exec nextcloud-db-fresh df -h /var/lib/mysql
|
||||
lsblk
|
||||
```
|
||||
|
||||
**Если на HDD:**
|
||||
- Создать volume на SSD
|
||||
- Перенести `/var/lib/mysql` туда
|
||||
- **Ускорение:** 5-10x для случайных запросов
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ **Query Cache для MySQL** 🗄️⚡⚡
|
||||
**Что:** Кешировать результаты повторяющихся SQL запросов
|
||||
|
||||
**НО!** В MariaDB 10.6+ Query Cache УДАЛЁН (deprecated)
|
||||
|
||||
**Альтернатива - ProxySQL:**
|
||||
```bash
|
||||
docker run -d --name proxysql \
|
||||
--link nextcloud-db-fresh:mysql \
|
||||
-p 6033:6033 \
|
||||
proxysql/proxysql
|
||||
```
|
||||
|
||||
**Настройка:**
|
||||
- ProxySQL кеширует запросы к БД
|
||||
- Nextcloud подключается к ProxySQL вместо напрямую к MySQL
|
||||
- **Ускорение:** 2-3x для повторяющихся запросов
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ **Preview Pre-generation** 🖼️⚡⚡
|
||||
**Что:** Генерировать превью заранее в фоне
|
||||
|
||||
```bash
|
||||
# Установка приложения
|
||||
docker exec -u www-data nextcloud-fresh php occ app:install previewgenerator
|
||||
|
||||
# Настройка размеров
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set previewgenerator squareSizes --value="32 256"
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set previewgenerator widthSizes --value="256 384"
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set previewgenerator heightSizes --value="256"
|
||||
|
||||
# Первичная генерация (один раз)
|
||||
docker exec -u www-data nextcloud-fresh php occ preview:generate-all
|
||||
|
||||
# Cron каждые 10 минут
|
||||
*/10 * * * * docker exec -u www-data nextcloud-fresh php occ preview:pre-generate
|
||||
```
|
||||
|
||||
**Эффект:** Превью файлов грузятся мгновенно
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ **Chunked Upload для больших файлов** 📤⚡⚡
|
||||
**Что:** Загрузка кусками вместо одного большого файла
|
||||
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set files max_chunk_size --value=10485760 # 10MB chunks
|
||||
```
|
||||
|
||||
**Для S3 External Storage:**
|
||||
```bash
|
||||
# Multipart upload для файлов > 5GB
|
||||
docker exec -u www-data nextcloud-fresh php occ config:system:set objectstore.s3.multipart_threshold --value=5368709120 --type=integer
|
||||
```
|
||||
|
||||
**Эффект:** Большие файлы загружаются быстрее и надёжнее
|
||||
|
||||
---
|
||||
|
||||
### 6️⃣ **MySQL InnoDB Optimization** 🗄️⚡⚡⚡
|
||||
**Что:** Правильные индексы для oc_filecache
|
||||
|
||||
**Текущие индексы:**
|
||||
```sql
|
||||
-- Проверка
|
||||
docker exec nextcloud-db-fresh mariadb -u root -proot_password nextcloud -e "SHOW INDEX FROM oc_filecache;" 2>&1 | grep -v insecure
|
||||
```
|
||||
|
||||
**Добавление недостающих:**
|
||||
```sql
|
||||
-- Для быстрого поиска по storage+path
|
||||
CREATE INDEX idx_storage_path_hash ON oc_filecache(storage, path_hash);
|
||||
|
||||
-- Для быстрого поиска дочерних файлов
|
||||
CREATE INDEX idx_parent_name ON oc_filecache(parent, name(191));
|
||||
|
||||
-- Для быстрого поиска по mimetype
|
||||
CREATE INDEX idx_storage_mimetype ON oc_filecache(storage, mimetype);
|
||||
|
||||
-- Для сортировки по времени
|
||||
CREATE INDEX idx_storage_mtime ON oc_filecache(storage, mtime);
|
||||
```
|
||||
|
||||
**Автоматически:**
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-fresh php occ db:add-missing-indices
|
||||
docker exec -u www-data nextcloud-fresh php occ db:convert-filecache-bigint
|
||||
```
|
||||
|
||||
**Эффект:** +50-100% скорость запросов к файлам
|
||||
|
||||
---
|
||||
|
||||
### 7️⃣ **Nginx FastCGI Cache** 🌐⚡⚡⚡
|
||||
**Что:** Кеш статических ресурсов и некоторых динамических
|
||||
|
||||
**Конфигурация Nginx:**
|
||||
```nginx
|
||||
# В http блоке
|
||||
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=NEXTCLOUD:100m inactive=60m;
|
||||
fastcgi_cache_key "$scheme$request_method$host$request_uri";
|
||||
|
||||
server {
|
||||
location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
|
||||
# FastCGI cache для избранных endpoints
|
||||
fastcgi_cache NEXTCLOUD;
|
||||
fastcgi_cache_valid 200 10m;
|
||||
fastcgi_cache_bypass $http_pragma $http_authorization;
|
||||
add_header X-Cache-Status $upstream_cache_status;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Эффект:** Статика грузится мгновенно
|
||||
|
||||
---
|
||||
|
||||
### 8️⃣ **Lazy Loading для больших папок** 📂⚡⚡
|
||||
**Что:** Не грузить все 24K файлов сразу, а порциями
|
||||
|
||||
**В Nextcloud уже есть!** Проверяем настройки:
|
||||
```bash
|
||||
# Pagination включена по умолчанию
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:get files pagination_limit
|
||||
# Если нет - ставим
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set files pagination_limit --value=100
|
||||
```
|
||||
|
||||
**Эффект:** Папки открываются быстрее
|
||||
|
||||
---
|
||||
|
||||
### 9️⃣ **S3 Transfer Acceleration** 🌍⚡⚡⚡
|
||||
**Что:** Использовать CDN endpoints TWC Storage
|
||||
|
||||
**Проверяем у провайдера TWC:**
|
||||
- Есть ли CDN endpoint?
|
||||
- Есть ли региональные endpoints ближе к серверу?
|
||||
|
||||
**Если есть:**
|
||||
```php
|
||||
// В config.php Nextcloud для S3
|
||||
'objectstore' => [
|
||||
'arguments' => [
|
||||
'endpoint' => 'https://s3-accelerate.twcstorage.ru', // вместо обычного
|
||||
]
|
||||
]
|
||||
```
|
||||
|
||||
**Эффект:** +50-200% скорость доступа к S3
|
||||
|
||||
---
|
||||
|
||||
### 🔟 **WebDAV Keepalive Connections** 🔗⚡⚡
|
||||
**Что:** Переиспользовать HTTP соединения вместо создания новых
|
||||
|
||||
**В Nginx:**
|
||||
```nginx
|
||||
upstream nextcloud {
|
||||
server nextcloud-fresh:80;
|
||||
keepalive 32;
|
||||
}
|
||||
|
||||
server {
|
||||
location / {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
proxy_pass http://nextcloud;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Эффект:** Меньше латентности при множественных запросах
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣1️⃣ **Collabora Caching** 📝⚡⚡⚡
|
||||
**Что:** Кеш документов и шрифтов в Collabora
|
||||
|
||||
**Проверка docker-compose Collabora:**
|
||||
```yaml
|
||||
collabora:
|
||||
environment:
|
||||
- DONT_GEN_SSL_CERT=true
|
||||
- extra_params=--o:ssl.enable=false --o:logging.level=warning --o:net.post_allow=crm\.clientright\.ru
|
||||
# Добавляем кеширование
|
||||
- extra_params=--o:admin_console.enable_pam=false --o:net.connection_timeout_secs=30 --o:per_document.idle_timeout_secs=3600
|
||||
# Добавляем volume для кеша
|
||||
volumes:
|
||||
- /var/cache/collabora:/tmp/cache
|
||||
```
|
||||
|
||||
**Создаём кеш папку:**
|
||||
```bash
|
||||
mkdir -p /var/cache/collabora
|
||||
chmod 777 /var/cache/collabora
|
||||
```
|
||||
|
||||
**Эффект:** Документы открываются в 2-3 раза быстрее
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣2️⃣ **Browser Service Worker Cache** 🌐⚡⚡
|
||||
**Что:** Кеш в браузере через Service Workers
|
||||
|
||||
**Nextcloud уже использует!** Проверить можно:
|
||||
- F12 → Application → Service Workers
|
||||
- Должен быть зарегистрирован
|
||||
|
||||
**Если нет - включаем PWA:**
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set core enable_pwa --value=yes
|
||||
```
|
||||
|
||||
**Эффект:** Интерфейс грузится мгновенно после первого раза
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣3️⃣ **Direct S3 Access (bypass Nextcloud)** 🔥⚡⚡⚡
|
||||
**Что:** Открывать файлы напрямую из S3, минуя Nextcloud WebDAV
|
||||
|
||||
**Реализация в CRM:**
|
||||
```php
|
||||
// В nextcloud-editor.js
|
||||
function openFileDirectFromS3(recordId) {
|
||||
// Получаем s3_key из CRM
|
||||
fetch(`/crm_extensions/nextcloud_api.php?record=${recordId}`)
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
// Прямая ссылка на S3
|
||||
const s3Url = `https://s3.twcstorage.ru/${bucket}/${data.s3_key}`;
|
||||
|
||||
// Для просмотра - прямо открываем
|
||||
if (isViewMode) {
|
||||
window.open(s3Url, '_blank');
|
||||
}
|
||||
|
||||
// Для редактирования - через Nextcloud
|
||||
if (isEditMode) {
|
||||
openInCollabora(data.nc_path);
|
||||
}
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
**Эффект:**
|
||||
- Просмотр: мгновенно (прямо из S3)
|
||||
- Редактирование: через Nextcloud (нужен Collabora)
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣4️⃣ **MySQL Connection Pooling** 🔗⚡⚡
|
||||
**Что:** Пул соединений к БД вместо открытия нового каждый раз
|
||||
|
||||
**ProxySQL (рекомендуется):**
|
||||
```yaml
|
||||
services:
|
||||
proxysql:
|
||||
image: proxysql/proxysql:latest
|
||||
ports:
|
||||
- "6033:6033"
|
||||
volumes:
|
||||
- ./proxysql.cnf:/etc/proxysql.cnf
|
||||
```
|
||||
|
||||
**Или в самом MySQL:**
|
||||
```sql
|
||||
SET GLOBAL max_connections = 500; -- увеличиваем пул
|
||||
SET GLOBAL thread_cache_size = 100; -- кеш потоков
|
||||
SET GLOBAL table_open_cache = 4096; -- кеш таблиц
|
||||
```
|
||||
|
||||
**Эффект:** Меньше overhead на создание соединений
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣5️⃣ **Отключение Activity Log для CRM папки** 📊⚡⚡
|
||||
**Что:** Не логировать каждое действие в папке с 24K файлов
|
||||
|
||||
```bash
|
||||
# Отключаем activity для storage ID 4 (crm)
|
||||
docker exec nextcloud-db-fresh mariadb -u root -proot_password nextcloud -e "
|
||||
DELETE FROM oc_activity WHERE object_type = 'files' AND object_id IN (
|
||||
SELECT fileid FROM oc_filecache WHERE storage = 4
|
||||
);
|
||||
"
|
||||
|
||||
# Настройка в Nextcloud
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set activity enable_activity_tracking --value=no
|
||||
```
|
||||
|
||||
**Эффект:** Меньше записей в БД при каждом открытии файла
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣6️⃣ **CDN для статики Nextcloud** 🌍⚡⚡⚡
|
||||
**Что:** Статические файлы (JS/CSS/иконки) через CDN
|
||||
|
||||
**Cloudflare перед Nextcloud:**
|
||||
```nginx
|
||||
# В Nginx - доверяем Cloudflare IP
|
||||
set_real_ip_from 103.21.244.0/22;
|
||||
set_real_ip_from 103.22.200.0/22;
|
||||
# ... остальные Cloudflare IP
|
||||
real_ip_header CF-Connecting-IP;
|
||||
```
|
||||
|
||||
**В Nextcloud config.php:**
|
||||
```php
|
||||
'overwriteprotocol' => 'https',
|
||||
'trusted_proxies' => ['173.245.48.0/20', '103.21.244.0/22'],
|
||||
```
|
||||
|
||||
**Эффект:**
|
||||
- Статика грузится из ближайшего PoP
|
||||
- Меньше нагрузки на сервер
|
||||
- Быстрее для пользователей
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣7️⃣ **Асинхронные операции через Jobs** ⏱️⚡⚡
|
||||
**Что:** Тяжёлые операции (сканирование, превью) в фоне
|
||||
|
||||
```bash
|
||||
# Cron вместо Ajax/Webcron
|
||||
docker exec -u www-data nextcloud-fresh php occ background:cron
|
||||
|
||||
# В host cron
|
||||
*/5 * * * * docker exec -u www-data nextcloud-fresh php occ cron:job:run
|
||||
```
|
||||
|
||||
**Важно для нас:**
|
||||
- Сканирование S3 - в фоне
|
||||
- Генерация превью - в фоне
|
||||
- Очистка кеша - в фоне
|
||||
|
||||
**Эффект:** UI не тормозит при открытии файлов
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣8️⃣ **Partitioning таблицы oc_filecache** 🗂️⚡⚡⚡
|
||||
**Что:** Разбить огромную таблицу по storage ID
|
||||
|
||||
```sql
|
||||
-- Проверяем размер таблицы
|
||||
SELECT
|
||||
table_name AS `Table`,
|
||||
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS `Size (MB)`
|
||||
FROM information_schema.TABLES
|
||||
WHERE table_schema = "nextcloud" AND table_name = "oc_filecache";
|
||||
|
||||
-- Если > 100MB - делаем partitioning
|
||||
ALTER TABLE oc_filecache
|
||||
PARTITION BY RANGE (storage) (
|
||||
PARTITION p_storage_1_3 VALUES LESS THAN (4),
|
||||
PARTITION p_storage_4 VALUES LESS THAN (5), -- CRM папка отдельно!
|
||||
PARTITION p_storage_other VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
```
|
||||
|
||||
**Эффект:**
|
||||
- Запросы к CRM папке НЕ сканируют всю таблицу
|
||||
- +50-80% скорость для больших таблиц
|
||||
|
||||
---
|
||||
|
||||
### 1️⃣9️⃣ **Отдельный WOPI сервер для Collabora** 📝⚡⚡⚡
|
||||
**Что:** Collabora на отдельном сервере/контейнере
|
||||
|
||||
**Сейчас у вас:**
|
||||
- Nextcloud + Collabora на одном сервере
|
||||
- Конкурируют за ресурсы
|
||||
|
||||
**Оптимально:**
|
||||
```yaml
|
||||
# На другом сервере или с лимитами
|
||||
collabora:
|
||||
cpus: '2.0'
|
||||
mem_limit: 2g
|
||||
mem_reservation: 1g
|
||||
```
|
||||
|
||||
**Эффект:** Nextcloud и Collabora не мешают друг другу
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣0️⃣ **Varnish Cache перед Nextcloud** 🚀⚡⚡⚡
|
||||
**Что:** HTTP кеш для статики и некоторых API
|
||||
|
||||
```
|
||||
Browser → Varnish (6081) → Nginx → Nextcloud
|
||||
```
|
||||
|
||||
**VCL конфигурация:**
|
||||
```vcl
|
||||
# Кешируем статику
|
||||
if (req.url ~ "^/core/.*\.(js|css|png|jpg|svg)$") {
|
||||
return (hash); # кешируем
|
||||
}
|
||||
|
||||
# НЕ кешируем WebDAV
|
||||
if (req.url ~ "^/remote.php/dav/") {
|
||||
return (pass); # не кешируем
|
||||
}
|
||||
```
|
||||
|
||||
**Эффект:** Статика грузится в 10-100 раз быстрее
|
||||
|
||||
---
|
||||
|
||||
## 🎯 РЕКОМЕНДОВАННЫЙ ПЛАН
|
||||
|
||||
### **БЫСТРЫЕ ПОБЕДЫ (сделать сегодня):**
|
||||
|
||||
1. ✅ **Добавить индексы в MySQL** (5 минут)
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-fresh php occ db:add-missing-indices
|
||||
```
|
||||
|
||||
2. ✅ **Preview Generator** (30 минут первый раз)
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-fresh php occ app:install previewgenerator
|
||||
docker exec -u www-data nextcloud-fresh php occ preview:generate-all &
|
||||
```
|
||||
|
||||
3. ✅ **Отключить Activity для CRM папки** (2 минуты)
|
||||
```sql
|
||||
DELETE FROM oc_activity WHERE object_id IN (
|
||||
SELECT fileid FROM oc_filecache WHERE storage = 4
|
||||
);
|
||||
```
|
||||
|
||||
4. ✅ **Chunked upload** (1 минута)
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-fresh php occ config:app:set files max_chunk_size --value=10485760
|
||||
```
|
||||
|
||||
**Ожидаемое ускорение:** +100-200%
|
||||
|
||||
---
|
||||
|
||||
### **СРЕДНЯЯ СЛОЖНОСТЬ (на неделе):**
|
||||
|
||||
5. ⬜ **InnoDB Buffer Pool 1GB** - требует изменение docker-compose
|
||||
6. ⬜ **Partitioning oc_filecache** - разделение таблицы
|
||||
7. ⬜ **HTTP/2 в Nginx** - если ещё не включено
|
||||
8. ⬜ **Cron для фоновых задач** - вместо webcron
|
||||
|
||||
**Ожидаемое ускорение:** +50-100%
|
||||
|
||||
---
|
||||
|
||||
### **ПРОДВИНУТОЕ (если нужно ещё быстрее):**
|
||||
|
||||
9. ⬜ **ProxySQL** - пул соединений к MySQL
|
||||
10. ⬜ **Varnish Cache** - HTTP кеш перед Nextcloud
|
||||
11. ⬜ **Отдельный сервер для Collabora** - разделение нагрузки
|
||||
12. ⬜ **CDN (Cloudflare)** - статика через CDN
|
||||
|
||||
**Ожидаемое ускорение:** +200-500%
|
||||
|
||||
---
|
||||
|
||||
### **ЭКСПЕРИМЕНТАЛЬНОЕ:**
|
||||
|
||||
13. ⬜ **Direct S3 access для просмотра** - обход Nextcloud
|
||||
14. ⬜ **Nginx caching для WebDAV** - кеш метаданных
|
||||
15. ⬜ **S3 Transfer Acceleration** - если TWC поддерживает
|
||||
|
||||
---
|
||||
|
||||
## 💰 СООТНОШЕНИЕ УСИЛИЙ/РЕЗУЛЬТАТА
|
||||
|
||||
| Решение | Сложность | Эффект | Приоритет |
|
||||
|---------|-----------|--------|-----------|
|
||||
| **Индексы MySQL** | ⭐ | ⭐⭐⭐ | 🔥🔥🔥 |
|
||||
| **Preview Generator** | ⭐ | ⭐⭐⭐ | 🔥🔥🔥 |
|
||||
| **Отключить Activity** | ⭐ | ⭐⭐ | 🔥🔥 |
|
||||
| **InnoDB Buffer 1GB** | ⭐⭐ | ⭐⭐⭐ | 🔥🔥🔥 |
|
||||
| **Partitioning** | ⭐⭐⭐ | ⭐⭐⭐ | 🔥🔥 |
|
||||
| **ProxySQL** | ⭐⭐⭐ | ⭐⭐ | 🔥 |
|
||||
| **Varnish** | ⭐⭐⭐⭐ | ⭐⭐⭐ | 🔥 |
|
||||
| **Direct S3** | ⭐⭐ | ⭐⭐⭐⭐ | 🔥🔥 |
|
||||
|
||||
---
|
||||
|
||||
## 🤔 МОИ РЕКОМЕНДАЦИИ
|
||||
|
||||
### **Начни с TOP-4:**
|
||||
|
||||
1. **Индексы MySQL** - 5 минут, +50% скорость
|
||||
2. **Preview Generator** - 30 минут, мгновенные превью
|
||||
3. **Отключить Activity для CRM** - 2 минуты, меньше записей в БД
|
||||
4. **InnoDB Buffer 1GB** - 10 минут, +30% скорость БД
|
||||
|
||||
**Это даст примерно 2-3x ускорение БЕЗ риска!**
|
||||
|
||||
---
|
||||
|
||||
### **Потом, если нужно ещё:**
|
||||
|
||||
5. **Partitioning oc_filecache** - разделить таблицу (сложнее, но эффективно)
|
||||
6. **Direct S3 access** - для просмотра файлов (очень быстро!)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 ВОПРОСЫ ДЛЯ ОБСУЖДЕНИЯ:
|
||||
|
||||
1. **Хочешь начать с быстрых побед** (индексы, preview, activity)?
|
||||
2. **Готов менять docker-compose** для InnoDB Buffer?
|
||||
3. **Интересует Direct S3 access** для просмотра файлов (обход Nextcloud)?
|
||||
4. **Рассматриваешь Varnish/ProxySQL** для серьёзного ускорения?
|
||||
|
||||
**Что выберем?** 😊
|
||||
|
||||
Reference in New Issue
Block a user