Apache support mmap-ing a specified list of files that will be mapped in memory for every process. This can be quite useful for caching static files into memory in order to reduce the IO overhead when reading these files from the hard-drive.
The script assumes that the cache
and file_cache
modules are enabled in Apache. For example, on Debian distribution one would issue:
a2enmod cache file_cache
in order to enable the modules.
The file in the Code section needs to be edited in order to set the include and exclude regex as well as a path to scan in. The output of the script will be a list of instructions that can be saved to an Apache configuration file.
An example output snippet generated by the script would be:
MMapFile /srv/www/wiki/lib/plugins/indexmenu/images/simple/joinbottom.gif MMapFile /srv/www/wiki/lib/plugins/indexmenu/images/simple/folderh.gif MMapFile /srv/www/wiki/lib/plugins/indexmenu/images/simple/plus.gif MMapFile /srv/www/wiki/lib/plugins/indexmenu/images/simple/base.gif MMapFile /srv/www/wiki/lib/plugins/indexmenu/images/gnome.png ...
The output of this script can then be redirected to an Apache configuration file, for example, by running:
./generatemmap.sh > /etc/apache2/conf-available/dokuwiki-mmap.conf
After which the configuration file has to be enabled:
a2enconf dokuwiki-mmap
and finally, Apache has to be restated:
service apache2 restart
#!/bin/sh ########################################################################### ## Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 ## ########################################################################### INCLUDE_REGEX="^.+?\.(yuv|tif|tga|gif|bmp|webp|tiff|png|jp(2|e|eg|g)|ico|ilbm|svg|mid|midi|iso|mpg|jar|mpeg|qt|mov|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv|m4a|deb|rpm|exe|bz2|Z|zip|lha|lzx|tar|txt|tgz|gz|inc|pdf|psd|ai|eps|ps|ram|rar|3ds|bin|cab|dll|7z|ppt|pps|ppsx|pptx|doc|html|htm|css|js)$" EXCLUDE_REGEX="^.+?/(data|cache|opt)/.+?$" SCAN_DIRECTORY="/srv/www/wiki" find $SCAN_DIRECTORY \ -regextype posix-extended \ -regex $INCLUDE_REGEX \ ! -iregex $EXCLUDE_REGEX \ | awk '{ print "MMapFile",$1 }'