php - Phalcon Assets Management 正在为同一文件创建 2 个请求

标签 php css assets phalcon

我有这个代码:

        $this->assets
        ->collection('header')
        ->setTargetPath('css/final.css')
        ->setTargetUri('css/final.css')
        ->addCss('css/base/base.css')
        // Use the built-in Cssmin filter
        ->addFilter(new \Phalcon\Assets\Filters\Cssmin);

发生的情况是,在请求页面时,对同一个 final.css 文件有 2 个相同的请求,但 html 源代码只有 1 个 css 文件的链接。

如有任何帮助,我们将不胜感激。

最佳答案

当在“beforeDispatch”之后完成调度转发时会发生这种情况;您的基本 Controller 将被初始化两次。如果您查看 dispatchLoop如果 Controller 已经初始化,那么你的 Assets 将被编译。如果您随后转发到另一个 Controller ,该 Controller 将被初始化并且您的 Assets 将被再次编译。

我使用了几个解决方案:放置一个 isInitialized 标志并将其作为路由参数与您的转发一起传递到您的 Assets 上,以防止它再次初始化,或者将 Assets 编译移动到 dependencyInjector 上的服务。我认为 phalcon 的文档并没有真正说明如果您遵循他们的 baseController 示例,您的 Assets 每次都会被编译。我们大多数人将 Assets 管理器用作静态的“全部编译”,因为 baseController 方法允许动态包含 Assets ——这似乎是个好主意,但通常只需将所有资源缩小一次并将其作为静态发送文件,在这种情况下,baseController 中的 Assets 是开销。

关于php - Phalcon Assets Management 正在为同一文件创建 2 个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015187/

相关文章:

PHP MySQL - 编辑数据中 undefined index

php - 如何解决WAMP中MySQL和PHP无法插入数据的问题?

html - <td> 中的边距空间与元素内容背景颜色相同

html - 如何使用 Twitter Bootstrap 创建类似 Facebook 的工具提示布局?

ios - 如何删除 ios .app 包中的额外链接图像

javascript - Jasmine 不会从 Assets 管道加载 javascript 文件

php - 如何在 HTML 中包含 PHP 文件

javascript - 使用多个不同的按钮在购物车中添加多个元素(添加到购物车)

html - 在 float (或内联 block )父级内水平均匀分布 div

android - 葫芦安卓 : Asset path error when trying to run a test on an APK