СТАРЫЙ ВОПРОС, ВИДЕТЬ НИЖЕ ОБНОВЛЕННОЙ ВЕРСИИ
Моя среда разработки не самая быстрая. Я беру примерно 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
сделает это, но нет.
Есть ли способ напрямую обращаться с загрузкой этих ресурсов?
ОБНОВИТЬ:
Это URL, который он пытается использовать сейчас:
http://localhost/myproj/_controller/js/bb8690a_part_4_myJavaScriptFile_2.js
Я установил use_controller
в false
для обеих dev и общих конфигураций. Как мне избавиться от этой _controller
части URL?
Изменить: если я assetic:dump
кеш, запустите 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. paragraph)
Из документации
Измените конфигурацию 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 и видеть рабочую страницу.