ColdFusion cfstatic includes all CSS files

I am trying to use cfstatic. In my index.cfm, I am adding only green.css using cfstatic, cfstatic should add minimized version of green.css only, So my h1 text <h1>I should be Green</h1> should be in green color. But cfstatic is adding both green.css & red.css. Am I missing configuration?

Application.cfc

component output="false"{

    This.name = "testing";
    This.sessionManagement = true;
    This.sessionTimeout = CreateTimeSpan(1, 23, 59, 59);
    This.mappings["/org"] = expandpath('.')&'org'; 

function onRequestStart(){


    application.cfstatic = CreateObject( 'org.cfstatic.CfStatic' )
        .init(  staticDirectory = ExpandPath('./assets'), 
                staticUrl       = "/cfstatic/assets/"
            );
    }
}

Index.cfm

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
    <cfscript>
        application.cfstatic.include( '/css/green.css',true );
    </cfscript>

<cfoutput>#application.cfstatic.renderIncludes('css')#</cfoutput>

</head>
<body>
    <h1>I should be Green</h1>
</body>
</html>

Green.css

/* This is assets/css/green.css */
h1 {color:green;}

Red.css

/* This is assets/css/red.css */
h1 {color:red;}

My Browser output is,

我的浏览器输出是


I'm not entirely familiar with CFStatic but I replicated your example and found this article on how package minification works. Reading through it, and the comments, I think you can go about this 2 different ways; though I couldn't say they're the best (or only) routes.

A) Split the styles into their own packages (folders). Which compiles the files from each folder into one minified file based on that folder.

So you could do a directory structure like so...

assets
-- css
--- green
---- green.css
--- red
---- red.css

Once compiled, the minified files would be green.min.css and red.min.css .

Then modify the include in your Application.cfc that calls green.css like so - application.cfstatic.include( '/css/green/green.css',true );

B) Set minifyMode="file" in the constructor which will create separate minified files in one location.

Your current index.cfm would work as expected in this case.

Depending on how intricate of an app you're working with I think split packaging is the way to go unless it's only a few files.

Cheers.


I've never used CFStatic, but it may be in renderIncludes() . Have you tried removing that line? What happens? If it is not renderIncludes() directly, configuring includeAllByDefault may be the key.

From their docs:

Including all files by default (from 0.2.2)

Out of the box, CfStatic will include all your static files if you never use the .include() method to specifically pick files to include (ie you just do .renderIncludes()). You can change this behaviour by setting includeAllByDefault to false.

The phrasing of that seems like it could be a little better. It's unclear to me whether this function is necessary to render all files included, or this is just a getAll(*Type*) sort of function.

链接地址: http://www.djcxy.com/p/82994.html

上一篇: Umbraco https重写规则会导致无限循环

下一篇: ColdFusion cfstatic包含所有CSS文件