Ответ 1
Попробуйте удалить эту часть кода в routing_dev.yml, когда use_controller имеет значение false:
_assetic:
resource: .
type: assetic
СТАРЫЙ ВОПРОС, СМОТРЕТЬ НИЖЕ ОБНОВЛЕННОЙ ВЕРСИИ
Моя среда разработки не самая быстрая. Я беру примерно 500 мс на PHP-запрос. Это начинает проблемы с файлами ресурсов Symfony2, потому что каждый из файлов ресурсов запрашивается через внутренние контроллеры Symfony:
http://localhost/myproj/app_dev.php/js/bb8690a_part_4_myJavaScriptFile_2.js
Как видно, файлы загружаются через структуру Symfony, а не напрямую. Так как я начинаю загружать более 20 файлов, умножая их на 500 мс, загрузка страниц очень медленная. Я хочу загрузить файлы напрямую, но я не уверен, как это сделать.
Это часть config.yml
:
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
# java: /usr/bin/java
filters:
cssrewrite: ~
Я думал, что установка use_controller
в false
будет делать это, но нет.
Есть ли способ напрямую обрабатывать загрузку этих ресурсов?
UPDATE:
Это URL, который он пытается использовать сейчас:
http://localhost/myproj/_controller/js/bb8690a_part_4_myJavaScriptFile_2.js
Я установил use_controller
в false
для обеих dev и общих конфигураций. Как мне избавиться от этой части _controller
URL?
Изменить: если я очистил кеш, запустите assetic:dump
и у меня есть use_controller
как false
, после перезагрузки я получаю Cannot load resource "."
. Я не могу обойти эту проблему, если я временно не включу use_controller
для загрузки одной страницы. После этого я отключу его и перезагрузите, и теперь он запрашивает у этого недопустимого URL-адреса, который содержит _controller
.
Он также работает в prod, но не в dev. Странно.
Код шаблона:
{% stylesheets filter="cssrewrite"
'bundles/outotecofil/css/reset.css'
'bundles/outotecofil/css/*'
output='css/dist/dist.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% javascripts
'@OutotecCommonBundle/Resources/public/js/jquery-1.6.2.min.js'
'@OutotecCommonBundle/Resources/public/js/jquery-ui-1.8.16.custom.min.js'
'@OutotecCommonBundle/Resources/public/js/chosen.jquery.min.js'
'@OutotecCommonBundle/Resources/public/js/widget/*'
'@OutotecOFILBundle/Resources/public/js/OFILDependencyManager.js'
'@OutotecOFILBundle/Resources/public/js/widget/*'
'@OutotecOFILBundle/Resources/public/js/plant-scope.js'
output='js/dist/dist.js'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
Чтобы быть предельно ясным: без app_dev.php(т.е. в режиме prod), он работает. Только в dev это не делает и выбрасывает эту ошибку "Невозможно загрузить ресурс". "", Если я не включу сначала только use_controller
для одного запроса, после чего я могу отключить его и перезагрузить, хотя URL-адреса будут содержать _controller/
в своих путях.
Попробуйте удалить эту часть кода в routing_dev.yml, когда use_controller имеет значение false:
_assetic:
resource: .
type: assetic
Документация по Symfony всегда является первым местом, где можно начать работу: Как использовать Assetic для управления активами
В среде prod ваши файлы JS и CSS представлены одним тегом каждый. Другими словами, вместо того, чтобы видеть каждый файл JavaScript, который вы включаете в свой источник, скорее всего, вы увидите следующее:
<script src="/app_dev.php/js/abcd123.js"></script>
Кроме того, этот файл фактически не существует и не динамически отображается Symfony (поскольку файлы активов находятся в среде dev). Это специально, позволяя Symfony генерировать эти файлы динамически в рабочей среде, слишком медленно.
Вместо этого каждый раз, когда вы используете свое приложение в среде prod (и, следовательно, каждый раз при развертывании), вы должны выполнить следующую задачу:
php app/console assetic:dump --env=prod --no-debug
Это будет физически генерировать и записывать каждый необходимый файл (например,/js/abcd123.js). Если вы обновите какое-либо из ваших активов, вам нужно будет запустить это снова, чтобы восстановить файл.
Если вы используете assetic:dump
, тогда вы должны cache:clear -e dev
"... если вы запустите кеш: очистите свой производственный кеш, он разогревает кеш с включенным режимом отладки. Если вы попытаетесь сбросить активы впоследствии, могут произойти странные вещи."
я нашел его здесь: http://sftuts.com/using-assetic-in-symfony2-for-css-compression (4. пункт)
Из документации
Измените конфигурацию dev, чтобы избежать использования контроллера.
# app/config/config_dev.yml
assetic:
use_controller: false
Удалите маршрут в routing_dev.yml, чтобы избежать побочного эффекта.
# app/config/routing_dev.yml
_assetic:
resource: .
type: assetic
Автоматически выгружать файлы css/less при каждом изменении.
php app/console assetic:dump --watch
У меня та же проблема, рабочая конфигурация: комментарий от routing_dev.yml:
_assetic:
resource: .
type: assetic
установите для use_controller значение false. После этого я могу использовать assetic: dump и увидеть рабочую страницу.