Files
crm.clientright.ru/ДИАГНОСТИКА_МЕДЛЕННОГО_ФАЙЛА.md
Fedor 269c7ea216 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)
2025-11-01 01:02:03 +03:00

6.4 KiB
Raw Blame History

🔍 ДИАГНОСТИКА: Медленное открытие файла 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

# Держать Collabora "тёплым"
*/5 * * * * curl -s https://office.clientright.ru:8443/hosting/capabilities > /dev/null

#2: Кеш шрифтов и статики Collabora

В Nginx перед Collabora:

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 добавить:

<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:

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 сек)

🔧 БЫСТРОЕ РЕШЕНИЕ:

Просканируй остальные папки тоже:

# 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 минут и после этого всё будет летать! 🚀