Этот код отлично работает, чтобы автоматически загрузить файл с контроллера Spring при нажатии ссылки на jsp.
@RequestMapping(value="/downloadLogFile")
public void getLogFile(HttpSession session,HttpServletResponse response) throws Exception {
try {
String filePathToBeServed = //complete file name with path;
File fileToDownload = new File(filePathToBeServed);
InputStream inputStream = new FileInputStream(fileToDownload);
response.setContentType("application/force-download");
response.setHeader("Content-Disposition", "attachment; filename="+fileName+".txt");
IOUtils.copy(inputStream, response.getOutputStream());
response.flushBuffer();
inputStream.close();
} catch (Exception e){
LOGGER.debug("Request could not be completed at this moment. Please try again.");
e.printStackTrace();
}
}
Вау!
Несколько лет назад у нас были огромные проблемы в популярных CMS. По равнине в основном хорошие показатели. Но он меняется вниз, когда появляются боковые проходы.
Итак, я написал несколько уродливых строк, чтобы найти самый быстрый способ. Обратите внимание, что ресурсы, устанавливающие различные пределы!
1-й) Я использовал время для установления прямой адресной точки. У каждого есть свой набор плоских файлов.
2) Я сделал рамдиск. Убедитесь, что у вас достаточно для вашего проекта!
3-ий) Для резервного копирования я использовал rsync и renundance, сжатый / извлеченный в Ramdisk в tar.gz
На практике это самый быстрый способ один. Преобразование временного кода и создание рекурсивных структур папок очень просто. Читайте, пишите, заменяйте, удаляйте тоже.
Окончательный выпуск приводит к обработке из:
PHP / MySQL> 5 с Perl / HDD ~ 1,2 с Perl / RamDisk ~ 0,001 с
Когда я вижу, что вы там делаете эта конструкция может быть полезна для вас. Я не знаю о внутренностях вашего проекта.
Жесткий диск будет жить намного дольше, ваш рабочий процесс может быть оптимизирован с помощью прямой адресации. Это доступно с других этапов. Скажем, вы можете работать на этой основе и из других скриптов. Как вы полагаете, обработка данных в R, извещатель из оболочки или что-то еще ...
Ошибки буферизации, такие как MySQL, больше не нужны. Ваш процессор больше не зацикливается.
Файловая система может интерпретироваться как иерархическое хранилище значений ключей, и ее часто используют в программах Unix. Однако создание файлов может быть довольно дорогостоящим, в зависимости от используемой ОС и файловой системы. В частности, различные файловые системы значительно различаются в зависимости от масштаба времени доступа с количеством файлов в одном каталоге. Например. см. Производительность NTFS и большие объемы файлов и каталогов и Как вы справляетесь с большим количеством маленьких файлов? : «Производительность NTFS сильно ухудшается после 10000 файлов в каталоге».
Таким образом, вы можете увидеть значительные преимущества, перейдя от псевдобазы данных, использующей миллионы небольших файлов, к «реальной» базе данных, такой как SQLite, которая хранит данные в одном файле, что делает доступ к отдельным записям более дешевым.
С другой стороны, 2 миллиона записей - это не так много, что говорит о том, что издержки файловой системы не могут быть для вас ограничивающим фактором. Попробуйте запустить программное обеспечение с тестовой рабочей нагрузкой и использовать профилировщик или другие средства отладки, чтобы узнать, на что тратится время. Это действительно open()
, что занимает так много времени? Или есть другая дорогостоящая обработка, которая может быть оптимизирована? Если есть этап предварительной обработки, который можно распараллелить, он один может значительно сократить время обработки.