мой сайт работает под управлением IPB 3.1.4, и я хочу предварительно сжать свои файлы .js. У меня есть root-доступ по ssh, и мне нужна команда для сжатия каталога js и кода для htaccess.
Мой htaccess:
Options -Indexes
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<FilesMatch "\.(ico|flv|jpe?g|png|gif|js|css|swf)$">
ExpiresActive On
ExpiresDefault "access plus 1 month"
</FilesMatch>
FileETag none
Если у вас есть собственный VPS или выделенный сервер, тогда mod_deflate для Apache может помочь вам решить эту проблему.
У меня нет htaccess, но, поскольку я сделал это на Nginx некоторое время назад, я могу хотя бы дать вам сценарий bash. Я просматриваю каталог (и его подкаталоги) и архивирую перечисленные типы файлов. Он также восстанавливает gzip, когда исходный код более свежий.
#! /bin/bash
# jve - 2011
# this script checks a list of directories for a list of extensions and
# generated gzipped versions of the files that are found
# if the modification date of a file is newer than its gzipped version
# then the gzip file is regenerated
# specify a filetype like *.css or a filename like index.html
# leave one space between each entry
FILETYPES="*.css *.jpg *.jpeg *.gif *.png *.js *.html"
# specify a list of directories to check recursively
DIRECTORIES="/var/www/nginx_default/*"
for currentdir in $DIRECTORIES
do
for extension in $FILETYPES
do
find $currentdir -iname $extension -exec bash -c 'PLAINFILE={};GZIPPEDFILE={}.gz; \
if [ -e $GZIPPEDFILE ]; \
then if [ `stat --printf=%Y $PLAINFILE` -gt `stat --printf=%Y $GZIPPEDFILE` ]; \
then echo "$GZIPPEDFILE outdated, regenerating"; \
gzip -9 -f -c $PLAINFILE > $GZIPPEDFILE; \
fi; \
else echo "$GZIPPEDFILE is missing, creating it"; \
gzip -9 -c $PLAINFILE > $GZIPPEDFILE; \
fi' \;
done
done
ссылка на оригинальную статью здесь: http://wiki.linuxwall.info/doku.php/en:ressources:dossiers:nginx:nginx_performance_tuning
Может ли сценарий bash в ответ на этот вопрос Помогите?