Codeigniter - php для js и / css - PullRequest
       0

Codeigniter - php для js и / css

1 голос
/ 31 января 2012

Я занимаюсь разработкой веб-приложения с использованием codeigniter и хочу динамически сгенерировать файл CSS и JS.

Я имею в виду, в зависимости от того, какие модули пользователь использует на сайте, он должен включатьразные CSS и JS файлы.Примерно так для CSS:

foreach($modules as $module){
  include('path/to/module/css');
}

Я сохраню это внутри класса с именем 'modules' и внутри функции с именем 'get_css ()'.Поэтому ссылка на codeigniter будет выглядеть следующим образом: http://somesite.com/modules/get_css

Но я хочу, чтобы сервер подумал, что это файл css, и я также хотел бы, чтобы он не находился внутри моего приложения (т. Е. Приложения / контроллеров), какэто может быть угрозой безопасности.Но вместо этого будьте в корневом каталоге.

Полагаю, мне нужно что-то сделать с htaccess и, возможно, создать другой файл, который получает содержимое с этой страницы?Я на самом деле не знаю, как это сделать, и / или если это правильный путь.

Спасибо за помощь.

1 Ответ

3 голосов
/ 31 января 2012

Вы можете заставить свой метод get_css () получать содержимое CSS-файлов, объединять их вместе и затем выводить кэшированный CSS-файл на диск. Было бы полезно использовать хэш для именования файлов, чтобы генерировать только объединенные CSS-файлы для каждой уникальной комбинации модулей. Таким образом, вы объедините содержимое всех файлов и назовете его так:

$output_filename = md5( $module_a_name . $module_b_name ... ) . '.css' ;

if (! file_exists( $output_filename ) {
    //generate merged CSS file
}

// Call back to your template layer to include $output_file in the page header

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

Я ни в коем случае не эксперт по безопасности, но до тех пор, пока PHP настроен на запись этих файлов, а не на неисполняемый каталог, и вы не используете ввод данных пользователем для получения исходных CSS-файлов, у вас все должно быть в порядке. Вам также нужно очистить кэшированные CSS-файлы при обновлении исходных CSS-файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...