Бутылочное горлышко Raspberry PI 3B

У одноплатного мегамозга Raspberry реально жуткая проблема «диск», скорость SD карты, которая в лучшем случае даст 80Мб/с на чтение и не более 10Мб/с на запись, и это реально бутылочное горнышко всей системы, если требуется быстродействие.

Не важно по сути что является инструментом программирования, Python, Perl или PHP, решить проблему можно, используя библиотеку Memcached, которая есть под любую операционку, от масдая до FreeBSD. На борту Raspberry 1Гб LPDDR2 SDRAM на 533Мгц, что тоже прямо скажем не лидер по скорости, но всяко работает быстрее, особенно на запись, относительно SD карты, при этом если статику, которой в проекте включая все Javascript, графику и CSS наберется даже если наворотить jQuery с Bootstrap и горой шрифтов больше 10-15Мб, то можно получить ускорение работы минимум втрое, а то и в 10 раз.

Делается это дело элементарно, если на пэхе.

<?php
global $memcached;
$memcached = new Memcached;
$memcached->addServer(‘localhost’, 11211) or die («Could not connect»);
if (!isset($_GET[‘file’])) {return;}
if (($out = $memcached->get(‘files’.$_GET[‘file’])) === false)
{
$out = file_get_contents($_GET[‘file’]);
$memcached->set(‘files’.$_GET[‘file’], $out, 3600);
}
echo $out;
?>

Сразу скажу, скрипт написан прямо в редакторе вордпресса (если где ковычку пропустил, в notepad++ проверяйте), конечно к нему надо прикрутить content-type и другие заголовки, плюс можно настроить время кэша, но это уже косметика, главное, что если этот файл вызывается в html коде как <img src=’/fcache.php?file=/img/logo.png’> то обращений к диску практически не будет. В принципе на чтение статичных файлов можно это же реализовать силами nginx отдавая солидное время жизни браузеру для статичных файлов, но предложенная схема работает при любом количестве клиентов, в то время как keep-alive лишь для частного, соответственно если Вы не один живете в умном доме и не с одного устройства заходите, мой вариант прикольнее будет.

Второй момент — это запись всякой промежуточной фигни, такой как состояния датчиков, которые нужны и ненужны одновременно. Нужны для работы, при этом сохранять их даром не нужно, куда проще опросить в случае перезагрузки системы, и при этом есть вариант сделать на питоне или перловке например опрашивалку состояний GPIO, запуская кроном или тупо зациклив этот процесс, и сохраняя в память, чтобы тупой тормознутый пых без особых прав эти состояния визуализировал, не опрашивая IO при каждом обращении юзера, тем более что мозгами и процессором у платы порядок, а значит в замкнутом цикле на том же perl работать будет без видимых тормозов — пока теоретически.