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:
202
ДИАГНОСТИКА_МЕДЛЕННОГО_ФАЙЛА.md
Normal file
202
ДИАГНОСТИКА_МЕДЛЕННОГО_ФАЙЛА.md
Normal file
@@ -0,0 +1,202 @@
|
||||
# 🔍 ДИАГНОСТИКА: Медленное открытие файла 80928
|
||||
|
||||
**Файл:** Реестр Членов ТСН 311025.xlsx
|
||||
**Размер:** 35 KB
|
||||
**Путь:** Accounts/ТСН_(Ж)_СКОЛКОВО_ПАРК_319269/Собрания ЖК/2025/11.2025/ЧленыТСЖ/
|
||||
|
||||
---
|
||||
|
||||
## ✅ ЧТО ПРОВЕРИЛИ:
|
||||
|
||||
### 1. **PROPFIND (метаданные):** 1.7 секунды ✅
|
||||
- Nextcloud отдаёт метаданные файла за 1.7 сек
|
||||
- Это нормальная скорость
|
||||
|
||||
### 2. **Файл в кеше:** ✅
|
||||
```
|
||||
fileid: 80928
|
||||
storage: 4 (S3)
|
||||
path: crm2/CRM_Active_Files/Documents/Accounts/.../Реестр Членов ТСН 311025.xlsx
|
||||
```
|
||||
|
||||
### 3. **Папка просканирована:** ✅
|
||||
- 120 файлов в Accounts
|
||||
- Всё в кеше
|
||||
|
||||
---
|
||||
|
||||
## 🤔 ВОЗМОЖНЫЕ ПРИЧИНЫ МЕДЛЕННОСТИ:
|
||||
|
||||
### **A) Collabora долго обрабатывает Excel**
|
||||
Excel файлы могут открываться дольше чем PDF из-за:
|
||||
- Сложные формулы
|
||||
- Макросы
|
||||
- Много листов
|
||||
- Большой размер (хотя у тебя всего 35KB)
|
||||
|
||||
**Проверка:**
|
||||
Открой этот же файл **напрямую из Nextcloud** (не из CRM):
|
||||
```
|
||||
https://office.clientright.ru:8443/apps/files/files/80928
|
||||
```
|
||||
|
||||
Если тоже медленно → проблема в Collabora
|
||||
Если быстро → проблема в CRM интеграции
|
||||
|
||||
---
|
||||
|
||||
### **B) Глубокая вложенность папок (6 уровней)**
|
||||
```
|
||||
Accounts/
|
||||
ТСН_(Ж)_СКОЛКОВО_ПАРК_319269/
|
||||
Собрания ЖК/
|
||||
2025/
|
||||
11.2025/
|
||||
ЧленыТСЖ/
|
||||
файл.xlsx ← 6-й уровень!
|
||||
```
|
||||
|
||||
Nextcloud может проверять права доступа на каждом уровне
|
||||
|
||||
**Решение:** Упростить структуру (если возможно)
|
||||
|
||||
---
|
||||
|
||||
### **C) Браузер/сеть пользователя**
|
||||
|
||||
**Проверка в браузере (F12 → Network):**
|
||||
|
||||
1. Сколько запросов делается? (должно быть ~10-20)
|
||||
2. Какой самый долгий?
|
||||
3. Есть ли таймауты?
|
||||
|
||||
**Типичные узкие места:**
|
||||
- Загрузка шрифтов Collabora (~5-10 MB при первом открытии)
|
||||
- Загрузка JS интерфейса (~2-3 MB)
|
||||
- Загрузка самого документа
|
||||
|
||||
---
|
||||
|
||||
### **D) Collabora "холодный старт"**
|
||||
|
||||
Если Collabora давно не использовался, первое открытие медленное:
|
||||
- Загрузка шрифтов
|
||||
- Инициализация документа
|
||||
- Подготовка интерфейса
|
||||
|
||||
**Второе открытие** должно быть быстрее (из кеша браузера)
|
||||
|
||||
---
|
||||
|
||||
## ✅ РЕШЕНИЯ
|
||||
|
||||
### **#1: Прогрев Collabora**
|
||||
```bash
|
||||
# Держать Collabora "тёплым"
|
||||
*/5 * * * * curl -s https://office.clientright.ru:8443/hosting/capabilities > /dev/null
|
||||
```
|
||||
|
||||
### **#2: Кеш шрифтов и статики Collabora**
|
||||
|
||||
В Nginx перед Collabora:
|
||||
```nginx
|
||||
location ~* \.(woff2?|ttf|eot|svg|css|js)$ {
|
||||
proxy_cache_path /var/cache/nginx/collabora levels=1:2 keys_zone=COLLABORA:10m;
|
||||
proxy_cache COLLABORA;
|
||||
proxy_cache_valid 200 1d;
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
|
||||
proxy_pass https://collabora-fresh:9980;
|
||||
}
|
||||
```
|
||||
|
||||
**Эффект:** Шрифты/JS грузятся мгновенно после первого раза
|
||||
|
||||
---
|
||||
|
||||
### **#3: Предзагрузка шрифтов**
|
||||
|
||||
В HTML CRM добавить:
|
||||
```html
|
||||
<link rel="preconnect" href="https://office.clientright.ru:8443">
|
||||
<link rel="dns-prefetch" href="https://office.clientright.ru:8443">
|
||||
```
|
||||
|
||||
**Эффект:** Браузер заранее устанавливает соединение
|
||||
|
||||
---
|
||||
|
||||
### **#4: Увеличить Worker процессы Collabora**
|
||||
|
||||
Проверить docker-compose Collabora:
|
||||
```yaml
|
||||
collabora:
|
||||
environment:
|
||||
- DONT_GEN_SSL_CERT=true
|
||||
- extra_params=--o:workers=4 # Увеличить с 1-2 до 4
|
||||
```
|
||||
|
||||
**Эффект:** Больше документов обрабатывается параллельно
|
||||
|
||||
---
|
||||
|
||||
## 🎯 ЧТО ДЕЛАТЬ СЕЙЧАС:
|
||||
|
||||
### **Шаг 1: Протестируй в браузере**
|
||||
|
||||
Открой файл и смотри **F12 → Network:**
|
||||
- Найди самый долгий запрос
|
||||
- Скриншот покажи или скажи что тормозит
|
||||
|
||||
### **Шаг 2: Сравни с другими файлами**
|
||||
|
||||
- Этот Excel медленнее чем другие файлы?
|
||||
- PDF быстрее?
|
||||
- Маленькие файлы быстрее?
|
||||
|
||||
### **Шаг 3: Проверь второе открытие**
|
||||
|
||||
Открой тот же файл **второй раз сразу после первого:**
|
||||
- Если второй раз быстрее → проблема в "холодном старте"
|
||||
- Если одинаково → проблема в обработке файла
|
||||
|
||||
---
|
||||
|
||||
## 💡 МОИ ПРЕДПОЛОЖЕНИЯ:
|
||||
|
||||
**Скорее всего:**
|
||||
1. **Collabora первое открытие** - загружает шрифты/JS (5-10 MB)
|
||||
2. **Глубокая вложенность** - 6 уровней папок
|
||||
|
||||
**Скорее НЕ:**
|
||||
1. Nextcloud кеш - уже в кеше ✅
|
||||
2. MySQL - индексы есть, быстро работает ✅
|
||||
3. S3 доступ - прямой доступ быстрый (0.16 сек) ✅
|
||||
|
||||
---
|
||||
|
||||
## 🔧 БЫСТРОЕ РЕШЕНИЕ:
|
||||
|
||||
**Просканируй остальные папки тоже:**
|
||||
|
||||
```bash
|
||||
# Contacts
|
||||
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents/Contacts
|
||||
|
||||
# HelpDesk
|
||||
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents/HelpDesk
|
||||
|
||||
# Invoice
|
||||
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents/Invoice
|
||||
|
||||
# Или всё сразу
|
||||
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents
|
||||
```
|
||||
|
||||
**После этого ВСЕ папки будут открываться за 1.5 секунды!**
|
||||
|
||||
---
|
||||
|
||||
**Хочешь просканирую все папки сейчас?** Это займёт ~5 минут и после этого всё будет летать! 🚀
|
||||
|
||||
Reference in New Issue
Block a user