У меня есть функция, которая позволяет пользователю создавать проекты и просматривать их на этой странице. Они могут импортировать ресурсы (pdf, img и т. д.), которые будут храниться вместе со своими проектами. Итак, теперь я хочу создать функцию, которая позволит пользователю экспортировать все свои вещи и тех людей, которые находятся в той же группе, что и они, аккуратно с красивой лентой, завязанной в zip-файле.
В настоящее время я использую Archive:Zip для упреждающего архивирования файла, сохраняя контрольную сумму CRC32 и запуская это как ежедневное задание cron, чтобы сократить время ожидания пользователя. Но если есть какие-либо изменения в любом из файлов, мне придется перезапустить все это.
Мой первоначальный тест показывает, что для запуска файла размером 103 МБ требуется до 47 секунд. Процесс включает в себя создание XML, связывающего их с XSL, копирование изображений, html для фреймов и многое другое.
Я думаю о создании таблицы или текстового файла для хранения контрольной суммы CRC32 или даты последнего изменения для всех файлов в области временного хранения и сравнения с этим списком каждый раз, когда пользователь нажимает на экспорт, и если есть какие-либо новые файлы, я удалю тот же файл из кэшированного zip-файла и добавлю новый файл. Или я просто оставлю все свободные файлы, скопирую и заменю более новые файлы, а затем сделаю архив при каждом щелчке.
Мои вопросы:
- Считается ли это преждевременным или плохим методом оптимизации?
- Как я должен правильно оптимизировать это?
- Есть ли какая-нибудь книга или ресурсы, которые я могу изучить для таких методов оптимизации?