То, что мы сделали на моей работе, имеют библиотеку, обеспечивает функции, такие как проверка, если пользователь зарегистрирован. Например:
<?php
require_once 'Auth.php';
// output some html
if (isLoggedIn()) {
echo 'html for logged in user';
}
// rest of html
страницы For, которые только authenicated пользователи должны видеть, проверки контроллера, если они зарегистрированы и если не это перенаправляет их к странице входа в систему.
<?php
public function viewCustomer($customerId) {
if (!isLoggedIn())
redirectToLoginPage();
}
Я рекомендую создать make-файл для решения этой конкретной проблемы. Вот быстрый и грязный make-файл, который я использую для своего сайта:
PUBDIR=../../static/js/
OUTDIR=./build/
COMPRESSOR=../yui/build/yuicompressor-2.4.2.jar
ARGS=
VPATH=${OUTDIR}
INST_TARGETS=${OUTDIR}jgblue.js
jgblue.js: combined.js
java -jar ${COMPRESSOR} ${ARGS} ${OUTDIR}$< -o ${OUTDIR}$@
combined.js: main.js listview.js tabs.js
cat $^ > ${OUTDIR}$@
.PHONY: install
install:
cp ${INST_TARGETS} ${PUBDIR}
Затем все, что вам нужно ввести, это:
make && make install
Сначала он берет все ваши файлы разработки и объединяет их в один файл, затем объединенный файл сжимается и копируется в ваш общий каталог. Я использую YUICompressor для сжатия, он работает неплохо.
Well, to minify CSS is just a couple of regexes.
// (PHP) but should be easily portable to any language
function compressCSS($css) {
return
preg_replace(
array('@\s\s+@','@(\w+:)\s*([\w\s,#]+;?)@'),
array(' ','$1$2'),
str_replace(
array("\r","\n","\t",' {','} ',';}'),
array('','','','{','}','}'),
preg_replace('@/\*[^*]*\*+([^/][^*]*\*+)*/@', '', $css)
)
)
;
}
And Dean Edwards's Javascript packer has been ported to PHP, Perl, .NET and WSH, so if you're using any of those technologies, you could actually have it running on your own server. ...Just remember to cache the results!
Since you're on shared hosting, I'd just suggest using the YUICompressor, and running your css/js files through it prior to uploading them. Be sure not to lose your original files - it could be a pain making future changes.
You could also place a script on your server that would periodically re-write your css/js files, passing them througha minify-process, and manually invoke this script after doing an upload.
I like Minify. It supports compressing and trimming html, javascript and css on the fly.
It is quite flexible, an can be integrated into existing apps.
Some of the more advanced features is combining multiple javascript files into one, same for css. It has multiple ways of defining which files to combine, which is usefull for testing purposes. This way you do not have to modify the settings every time.
Я предлагаю сжать (любыми средствами каким-либо автоматическим способом) на вашей машине разработки и протестировать ее там перед загрузкой на ваш действующий сервер. Фундаментальное изменение JavaScript на последнем этапе процесса развертывания представляет собой очевидный риск возникновения ошибок.
Действительно крутое решение, которое делает обслуживание js и css автоматическим, как во сне.
Проверьте: http://code.google.com/p/minify/
Features
введите здесь код
Я только что написал этот мини-сценарий в Питоне. Как и Bills solution, он использует компрессор YUI, но будет работать в безделушке. Он предполагает, что исходные (unminifie) файлы будут в /some/path/src/, а уменьшенные версии должны идти в /some/path/. Также предполагается, что файл jar yuicompressor находится в текущей папке:
import os, glob
from subprocess import Popen,PIPE
def RunCommand( cmd, show_output ):
p = Popen(cmd, shell=True,stdout=PIPE,stderr=PIPE)
for line in p.stdout:
if show_output:
print line
outerr = "\n".join(p.stderr.readlines() )
if len(outerr) > 0:
print "ERROR: " + outerr
sys.exit()
code = p.wait()
if ( code > 0 ):
print ("ERROR CODE: %i" % code )
sys.exit()
compresser = "yuicompressor-2.4.2.jar"
dirs = [ "../wwwroot/css/", "../wwwroot/JavaScript/"]
extensions = ["*.js", "*.css" ]
for dir in dirs:
src = dir + "/src/"
for ext in extensions:
for path in glob.glob( os.path.join( src, ext)):
file = os.path.basename(path)
src_file = os.path.normpath( src + "/" + file )
dest_file = os.path.normpath( dir + "/" + file )
if not os.path.isfile(dest_file) or os.path.getmtime(src_file) > os.path.getmtime(dest_file):
print "minifying %s..." % (dest_file)
command = "java -jar %s %s -o %s" % ( compresser, src_file, dest_file )
RunCommand(command, True)
Существует еще более легкое решение для обоих (JS и CSS), так что вы можете «минимизировать на лету». У вас должна быть возможность легко перенести его на любой язык (в настоящее время это PHP). Это действительно фрагмент и неотъемлемая часть PHP Fat-Free Framework. Перейдите по этой ссылке и посмотрите мой код. Это всего лишь одна функция. Не ищите наворотов, таких как объединение файлов, кодирование base-X, сокращение переменных или даже gzip-кодирование (хотя это можно легко добавить).