Jump to content

Recommended Posts

Posted

As would I. Currently I have a foreach pushing the list into an array and using that but if I could use the FilenameArray it would simplify my code a great deal.

$min_js = array();
foreach($config->scripts as $script){
	$min_js[] = $script;
}
if(count($min_js)) echo '<script src="'.AIOM::JS($min_js).'"></script>';

I'm not sure about my foreach since it could be run on an empty $config->scripts but I don't know how best to check a FilenameArray is not empty, count() returns 1 when it's empty usually.

  • Like 1
Posted

What sort of hosting are you using, vxda? 

I sometimes come across this on Cloud hosting where shared NFS storage is used. Not just in this module, but also the core PW modules cache file, before that was moved to the new DB-backed WireCache class.

I've had success when removing the LOCK_EX parameter on file_put_contents calls. For this module, it's in two places - lines 464 and 111.

Posted

Hi, for some reason module create empty files. Anyone else got same problem ?

I had this problem before I realised that the scripts and CSS files are relative to the templates directory. Check you're not using link relative to the site root.

Posted

Thanks Craig and Mad, i will check your advices out.
im using Polish provider - home.pl, and yes i think its cloud.

 

Posted

Some brief feedback after using this module (V 3.1.3) on a project with PW 2.4. All in all a great tool for reducing page load times.

There's an issue about this on Github and it will probably be addressed once the developer gets back from a trip but it took me a while to find so I'll mention that the cache ids are made from the modtime of the file(s). If you FTP files which arrive in the same second they will try to use the same cache file and your pages will be a mess. I suggested a fix.

When using dev tools in browsers to inspect elements and peek into CSS files you'll be seeing the cache file filenames (md5 gibberish). I made a small modification to list the file path(s) at the top of the file. Sort of contrary to minifying but useful.

EDIT: This idiom comes in handy to minimize only files in a certain folder. I do something just like it for 'styles' too. This way if I put URLs to external popular libraries (already minimized) in $config scripts they are left alone:

foreach ($config->scripts->unique() as $path){
    if(preg_match('#^'.$config->urls->templates.'scripts(.*)#',$path,$m)) $path = AIOM::JS('scripts'.$m[1]);
    echo '    <script type="text/javascript" src="'.$path.'"></script>'.PHP_EOL;
}    

 

  • Like 1
  • 1 month later...
  • 1 month later...
Posted

Hey David, 

what a useful module! Thank you so much.

Does anyone else have issues with inline svg graphics? During the compression it seems like the AIOM-Module is breaking up. Perhaps wrong escaping?

background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHB vcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4wLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLVNWRy0yMDAxMDkwNC9EVEQvc3ZnMTAuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMCAyOSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgMjkiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggaWQ9InBob25lLTItaWNvbiIgZmlsbD0iI0ZGRkZGRiIgZD0iTTEzLjc5OCwyOC45MDRDMTMuNzk4LDI4LjkwNCwxMy43OTgsMjguOTA0LDEzLjc5OCwyOC45MDQNCgljLTEuNTY5LDAtMy4xNTctMC43NDctNC43MjEtMi4yMTljLTEuODM0LTEuNzI2LTMuNzQ2LTQuNTU3LTUuNjgzLTguNDE1QzAuNjUxLDEyLjgwOS0wLjQxMiw4Ljc1NiwwLjE0Miw1Ljg4DQoJQzAuNzM0LDIuODExLDIuNjQ0LDIuMDM0LDYuNzM4LDAuMWw0Ljc0OSw5LjQ1NWwtMy4xNzIsMS41OTNjLTAuMTQxLDAuNCwwLjAyNSwxLjkzMiwxLjA3OCw0LjA1NQ0KCWMxLjA3NiwyLjE3LDIuMjIzLDMuMjUyLDIuNjM2LDMuMzgzYzAuMTg2LTAuMDkxLDMuMTctMS41OCwzLjE3LTEuNThsNC44LDkuNDQ4QzE2L jE3NCwyOC4zNjgsMTUuMzY5LDI4LjkwNCwxMy43OTgsMjguOTA0eg0KCSBNMi41NDksNi4zNDRDMi4yNDUsNy45MiwyLjUyNSwxMS4wNzgsNS41ODQsMTcuMTdjMS44MDgsMy42LDMuNTQ4LDYuMjAxLDUuMTczLDcuNzNjMS4wOTUsMS4wMywyLjExOCwxLjU1MiwzLjA0MSwxLjU1Mw0KCWMwLjc4OCwwLDEuMzUzLTAuMzEzLDIuOS0xLjA4NmwtMi41ODEtNS4wODFjLTAuODM0LDAuNDE3LTEuMDMyLDAuNTE0LTEuMDkzLDAuNTQzYy0xLjc5MywwLjg3NS0zLjU3Mi0wLjkzMy00LjcwOS0yLjYxMQ0KCWMtMC45OTUtMS40NjgtMS44MjgtMy4yNzktMi4yMjgtNC44NDRDNS4zOCwxMC42MTQsNi4yMzEsOS40ODksNy4wNyw5LjAzMWwwLjAzOC0wLjAybDEuMDg5LTAuNTQ3bC0yLjU2MS01LjENCglDMy44NjgsNC4yNTQsMi44ODQsNC42MDcsMi41NDksNi4zNDR6Ii8+DQo8L3N2Zz4NCg==')




			
		
Posted

I've filed already a couple related issues with AIOM on github but no reaction so far since months. I think it's possible that minify html option causes it? Does it work when in dev mode?

  • 2 weeks later...
Posted
Hey guys, 

sorry for the late feedback. I currently have so much with my company around the ears and stuck in large projects that I currently have no time to maintain AIOM+. I'm sorry. The project will continue to maintain. 

Did any of you like to take care of to AIOM+? At best a German developer. Then I give him on Github access to the Repositority. 

Dave

  • Like 3
Posted

Hi David,

I'd be glad to take care of AIOM. I'm coming from the South of Germany.

I work together with @phil at Conclurer, a web development company. 

If you want to, I can send you my personal mail address so that we can talk about AIOM.

Thanks in advance,

Marvin

  • Like 11
Posted

Hi David,

I'd be glad to take care of AIOM. I'm coming from the South of Germany.

I work together with @phil at Conclurer, a web development company. 

If you want to, I can send you my personal mail address so that we can talk about AIOM.

Thanks in advance,

Marvin

Hi Marvin, 
 
perfect. With you, the project is certainly in good hands. Send me please your contact information, then we can talk about AIOM. 
 
Thanks and best regards from Cologne. 
Dave
  • Like 2
  • 2 weeks later...
Posted

Calling AIOM/chmod experts...

Just today a whole website of mine using AIOM ceased to function.

Precicely 1 month after installing AIOM on the site, I was getting a 500 error. Looking at the PW log file I saw countless repetitions of...

2014-10-18 15:59:18	guest	http://***.com/?/	Error: 	Exception: The permissions (chmod) to delete old cache files could not be changed. (in /srv/***/www/***.com/public_html/site/modules/AllInOneMinify/AllInOneMinify.module line 646)

So, I guess one or more of my cached files had hit a 30 day expiry date.

I did a bit of investigating, and it seems that before deleting cache files, AIOM like to chmod 777 the file. If it can't chmod the file, it throws this error and stops the site loading. No logging into PW admin, nothing.

It seems similar to this problem here:

https://github.com/ryancramerdesign/ProcessWire/issues/648

And the exact line of code in question is highlighted by Ryan there. https://github.com/FlipZoomMedia/ProcessWire-AIOM-All-In-One-Minify/blob/AIOM%2B/AllInOneMinify.module#L641... It's line 646.

Is there any real need to change the permissions to 777 before deleting?

The problem in my case is that www-data doesn't own these files. I copied this installation over from another server, and the owner (chown) is actuall "admin". But I have group rw permission to www-data, so the files can be deleted. I think that should be okay, right?

So, what I did was comment line 646 and added the following three lines

        // ------------------------------------------------------------------------
        // Remove all files that are older than the maximum lifetime.
        // ------------------------------------------------------------------------
        foreach ($_cacheFiles as $_cacheFile) {
            if (((filemtime(wire('config')->paths->assets.self::$cacheDir.DIRECTORY_SEPARATOR.$_cacheFile->getFilename()) + self::$cacheMaxLifetime) < time() OR $force_all === true) AND is_file($_cacheFile)) {
                $_file  = wire('config')->paths->assets.self::$cacheDir.DIRECTORY_SEPARATOR.$_cacheFile->getFilename();
                if(chmod($_file, 0777) !== false) {
                    if(unlink($_file) === false) {
                        throw new WireException('The old cache files could not be deleted.');
                    }
                } else {
                    // throw new WireException('The permissions (chmod) to delete old cache files could not be changed.');
                    if(unlink($_file) === false) {
                        throw new WireException('The old cache files could not be deleted.');
                    }                    
                }
            }
        }

And now everything seems to work again.

Stuff like this sort of scares me. The last thing I want is for sites to completely and arbitrarily stop working!

  • Like 1
Posted

Hello everybody,

I'm happy to announce that David and I have negotiated, how to continue both development and support of the AIOM module.

This is our deal:

  • Conclurer will develop and support the AIOM module from now on
  • David will continue developing once he'll have more time available

Therefore, the repository has been migrated to a new URL: https://github.com/conclurer/ProcessWire-AIOM-All-In-One-Minify

At Conclurer, we are exited to take care of AIOM. For the near future, we're working on necessary bug fixes. We're also planning to release a new major version (AIOM 4) within the next months. 

For any new bugs in the current version of AIOM: please open a ticket on our GitHub repository.

Thank you in advance,

Marvin

  • Like 9
Posted

Hello everybody,

We've just updated AIOM to Version 3.1.4. This is a minor update including the following changes:

  • Bugfix: CacheFiles for Pages are now deleted when a new minimized file is created
  • Bugfix: An error is thrown if the document root is different to ProcessWire's base path

If you find additional bugs or have some feature wishes, please open up a ticket at our GitHub repository.

Thank you!

Marvin

  • Like 6
Posted

David,

I've been meaning to say thanks for this. There are a zillion ways to combine/minify — this is by far the best IMO. I love it.

  • 1 month later...
Posted

Hey guys, i am trying this module out on my development (Local) server before deploying to staging server.

I am currently having an issue with CSS URL rewrites. My Local implementation of processwire for the site I am developing is at 

http://localhost/sitename/

I have tried with config file to add host 'localhost' and 'localhost/sitename'. Neither seems to make a difference the module is rewriting to 

http://localhost/site/templates/css/{fonts or icons}/filename

Any ideas what i should be doing, for instance would this work if I moved the directories for fonts and icons up to just under /templates/ ?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...