jFinalizer joomla plugindocumentation, how-to and support
Releases & download: v1.1.5 RC1Version 1.1.5 for joomla 1.5.10+, PHP 5 Important Upgrade Note: After upgrading from a previous jFinalizer version, make sure to hit "apply" or "save" in the jFinalizer config page at least once to initialize news added parameters. Please read the release notes for v.1.1.0+ right click, copy URL and paste into joomla for installing by URL. Otherwise, just download the plugin and upload manually. See changelog. License: GPL, no registration required, free of charge. Component developers please see the tech notes. Please bugreport to This e-mail address is being protected from spambots. You need JavaScript enabled to view it or feel free to leave bug reports and comments below Warning: Do not install jFinalizer on PHP 4! OverviewUse jFinalizer if you want to reduce HTTP requests to site, reduce traffic, speed up page loading or decrease HTML page size if you have big templates. On big templates, you can gain 10+ YSlow points, sometimes more than 20. There are many other libraries which do similar things, but we built and run jFinalizer because most of the templates we used would not work with other plugins. Key Features:
Do not use jFinalizer if you want the last bit of compression. Its designed for runtime performance, not for super-high compression. Do not use jFinalizer if you have components, extensions or templates which generate dynamic CSS on the fly (no - you usually don't have that, even on complex templates). Do not expect jFinalizer to work out of the box. Default settings are compatible for most sites, but tuning HTML output is a tricky task and highly depends on your template, CSS, Java Script, components, plugins and modules. Give yourself 10 minutes to get this plugin configured properly. DemoSimply right click and view the source of this page or view the source code of our corporate main site www.farbfinal.de to see what jFinalizer does. Actually, both use the same joomla! installation but different templates. DescriptionThe idea of jFinalizer is to replace tons of JS and CSS files with a single CSS and JS file. This is done by processing the final joomla output HTML. Additionally, you can compact & compress a few things and make your HTML look more compact. jFinalizer uses another approach than most libraries we've found: It does not do anything to CSS, HTML and JS code except for stripping whitespaces and stuff which is not needed. The plugin merges all CSS and JS files used in a page into a single file, preventing the loading order of the html source. Note that only CSS and JS files within the region are processed. We've found that processing body CSS and JS usually harms on complex templates. jFinalizer is designed for live performance. This requires a bit more tuning on the developer side, but reduces runtime CPU usage at runtime a lot. jFinalizer has its name not only because our company is called farbfinal, but also because its usually the last plugin in the system chain and finalizes your output. Your goal is to develop your site, then turn on jFinalizer and see what happens. If your code is clean, you're on the way to go. Even though joomla! is a great CMS, it has a few drawbacks. Joomla's flexibility is awesome, but at the same time it introduces a lot of file I/O on the application server. jFinalizer can help a little to improve that. It does not check for updated CSS or JS files since the developer knows anyway when design is changed. Imagine you have a template with 9 CSS and 7 JavaScript file includes. Makes 16 all together. jFinalizer reduces it to 2 (see limitations). This reduces Server file I/O. Since jFinalizer does not check the modified date of the source files, 14 file system calls are saved. Limitations
PerformanceIn Production mode, the plugin performs quite well and does not consume a lot of CPU. For performance analysis and before / after comparison, please use external tools such as YSlow (FF Plugin). Since jFinalizer is a system plugin we want to keep it slim, there are only a very few analyis options build into plugin (see configuration). Installation Workflow1. install the plugin and set it to plugin order "last" Tip: Whenever you change a CSS or JS file later or install new joomla! components / plugins, turn jFinalizer into Development Site Mode and check life site again. Tip: While configuring, do one thing at a time. If you want HTML compression, start there and disable all CSS / JS processing. See HTML setup guide Don't give up tuning to fast. Allow yourself 10 minutes to get it working properly. If there is no combination to get your template working, this plugin is probably not for you. Try a different approach like CssJsCompress or JACompress. When installing a jFinalizer upgrade, simply install it. The plugin does not need to be uninstalled before. Configuration TipsIf your site does not work properly, your goal is to turn jFinalizer off, see your HTML source code, then turn the plugin on, reload, see your source code again and compare. First steps for setup could include this procedure:
Tip: Any Compacting can break layout. If your server supports runtime gZip compression, thats probably not a big deal and you can turn it off Tip: if your site uses many joomla components, make sure to also check the pages where they appear! For example, you could get a perfect layout and performance with HTML compression set to ultra, but some poorly coded component might break it or not work as expected. Tip: If HTML compression is what you want most, work the other way around. Disable CSS and JS processing first, enable HTML processing and be sure to try all available modes! If you have the system.cache plugin enabled, disable it while tuning. Try to start with DeTab mode (default). Read the HTML Setup Guide. To see an example, right click and look at the source code of this page. Farbfinal.de is run against jFinalizer with HTML processing mode set to fast using moderate compression and check contitional exceptions, JS on and optimize, CSS on and optimize, remove comments and deliver using gzip htaccess. Setup Guide: HTML compressionHTML processing is the most tricky part. Stick on this workflow to get it working. Be sure your browser reloads properly and dont try to get CSS / JS aggregation to work before HTML processing if you want both.
Tip: for bypassing HTML processing for only a specific block of Text or content plugin, wrap it with {jfbypass}My bypassed content goes here {/jfbypass} in the article editor.
Setup Guide: CSS / JS processingIf you dont want HTML output processing, try this workflow to setup CSS / JS processing properly. This may help to to get your site working a bit faster.
Setup Guide: use both togetherSee instructions above. Be sure to first get HTML compression working properly at first, then start CSS / JS file processing - not the other way arround! Optionsthe default configuration should work for most installations:
Site ModeYour most important switch while tuning and developing. Controls how jFinalizer handles its internal cache. Yes, you want cache! The cache system on jFinalizer operates independent of all joomla! cache settings, because its always content independent. Caching in jFinalizer means that JS and CSS files are stored to disk and not re-processed on every page load. HTML output is never cached by jFinalizer. Using jFinalizer without cache does not make sense because you would decrease HTTP requests but at the same time increase execution. While developing design (CSS) or functionality (JS) you want to turn Site mode into development. When your site is up, fixed, steady and running - go for production. Note: development mode reduces performance big time - your site will slow down drastically. Tip: while in designing layout in development mode, disable JavaScript & CSS compacting
process HTMLremoved in version 1.1.0. Also, Tidy support is not available in jFinalizer 1.1.0+ HTML CompressionSets the compression level of HTML output. Depending on how clean your template is, you can reach different compression levels. Compression levels also affect CPU usage on the server side a bit. Please note that the most efficient and fastest mode is ultra, but unless your template is super-clean, ultra mode will probably break your layouts. All modes try to remove as many white spaces as possible. Ultra also removes all line breaks. The difference in the operating modes is how deep the plugin digs and how much whitespace is removed. Some modes do additional checking to prevent design breaks. Please try and see which option works best for your template. The different options are available because the idea if jFinalizer is to perform as fast as possible and do as few checks as possible at runtime.
Tip: Published starting at jFinalizer 1.1.0, DeTab seems to be most compatible. Its also the current installation default setting. We did a lot of testing and performance comparison. While being much more compatible and 2x faster than our best algorithm so far, Safe mode C+, HTML size increases typically between 0.5-1% only when using DeTab compared to Safe Mode C+. Also, source code looks very clean now. So we strongly recommend DeTab now. Note: Starting from some of the next releases, only compression modes DeTab, Safe Mode C+ and Ultra will be available. Others will be removed an depreciated! HTML commentsKeep or remove HTML comments. It takes a bit CPU but usually is a good thing if you want to clean your output. Please note that multiline comments are always kept!
Pre Tag SupportNever touch <pre> tags. Don't remove linebreaks, whitespaces etc. This option is available on jFinalizer 1.0.11+. Useful for plugins like CodeCitation. If you know your site does not have any <pre> tags, turn it off for a tiny bit of extra performance.
Generator TagKeep or remove the joomla! generator meta tag. Can help a bit to not expose joomla. Note that there are other ways to do that but they require joomla ource code editing.
process JavaScriptDoes what it says. Process all JavaScript tags, read the files, merge them into one and cache them. Note that having external url (from another server) javascript within your <head> tag will probably break the script. All JavaScript files outside the header <head>...</head> tags are ignored.
compact JavaScriptremove whitespaces and other unused stuff from JS files. Usually saves a couple bytes. In some cases, compacting JS can break JavaSvript functionality. If thats the case, try disabling it. Performance note: compacting JavaScript files is usually the most time consuming task of jFinalizer. While this is not a problem in production (cache) mode, you might want to turn JS compacting off when in development mode.
jQuery NoConflict() supportresolve jQuery conflicting Ajax libraries - added by feature request, v1.1.4+ Some Ajax libraries might fight each other. The jQuery library contains a switch which can resolve this issue when used together with other libraries, such as joomla's default MooTools. However, jFinalizer has the option to inclide that switch because sometimes, 3rd Party components already call this JavaScript statement, so it's not needed a second time.
Skip JS filesnever process those JavaScript files - added by feature request, v1.1.4+ You can manually enter a comma-separated list here to exclude specific JavaScript files. These files will always be skipped. For example, the default setting tini_mce.js ensures that the joomla default TinyMCE editor will still work in the front end when users edit content.
process CSSsame thing as as process JavaScript but for CSS files compact CSSsame thing as compact JS but for CSS check conditional ExceptionsCheck it the template contains conditional <!--if... --> CSS includes for client browsers. If it does, they are ignored. The option is available because if YOU KNOW your template does not have any conditional includes, you can turn this option off and save some extra performance.
gZip outputcompress cached JS and CSS files using gZip. gZipping JS & CSS files can drastically reduce file size and download time. When run in .htaccess delivery mode, additional PHP calls are bypassed and runtime compression by the delivery server (eg. apache) is skipped. This can reduce overall load and File I/O on your server. Please note that .htaccess mode is not available on all platforms. If you run a dedicated server, this option is for you to tune the last bit. The modes explained for experts: PHP delivery: the client browser calls a PHP file which delivers the JS / CSS file dynamically and adds necessary css headers. The files are already compressed, but PHP needs to be opened and a fopen() function is involved. .htaccess delivery: a .htaccess file is placed into the delivery folder (usually /cache/assets). The web server checks if gZipped content is accepted by the client and rewrites the request file name to deliver the gzipped version. Fast, no additional PHP calls. On apache, mod_rewrite must be enabled and allow_overrides must be properly set for the cache path. If Apache is set to compress .js and / or .css files by default on the fly using DEFLATE, this will be bypassed for those files saving CPU time. To customize the content of the .htaccess file depending on your server configuration, copy the file /plugins/jfinalizer/htaccess.default.php to htaccess.custom.php and edit this file. This way, your changes remain after you upgrade jFinalizer. Note: .htaccess configuratio requires jFinalizer 1.0.4+ Please note that apache knowledge is required when editing the .htaccess file contents. The goal of the .htaccess file is to check if the client accepts compressed data, and if thats the case redirect the request to the gzipped version of CSS / JS files.
cache lifetime in sAs CSS and JS files dont change once you finished designing, cache lifetime is usually set to 0 meaning the files never expire. However, you have the option to enter an amount of seconds to force rebuilding the merged files after that period. Do not confuse "expired" here with http expiring / client cache lifetime: HTTP send Headers are not touched by jFinalizer.
debugAppend some debug info comments or show performance data Debug mode help you to see what jFinalizer does and how it performs. In html comments mode, a html comment containing the name of the removed JS / CSS files is placed into placed into output HTML source code. This can be useful if you want to see what files were merged. In full and performance mode, jFinalizer displays performance data such as total runtime of the plugin, number of merged files an HTML byte savings on top of your site. Full & performance breaks design and cookies. So don't use it on a live site - or if you do, turn it off quickly again. While tuning jFinalizer compression settings, don't run full and performance since you can't see compression design breaks.
Advanced: Place Tagswhere to place output file tags in HTML. By default (auto), the first found tag (CSS / JS) in your source template is replaced by the merged output file. However, you can optimize tag placement by manually placing tags. For example, if you have a minimal template which has not a lot of JavaScript, you could move all JavaScript from the <head> to the bottom of your body. Anyways, manual template editing is necessary. If you want to do so, call the loading event at the appropriate place within your template and then switch to manual . Usually this is the section which outputs head data. It does not matter if other CSS or JS files are loaded after manual placement. The parsing and collecting always comes later. PHP Placement code CSS: $mainframe->triggerEvent('getCompressedCSS'); ($mainframe refers to the joomla mainframe object).
Advanced: Delivery Pathdelivery output path for CSS and JS files in client HTML Now thats tricky. By changing the delivery path, you can tell the client to load the merged JS and CSS files from another source path. Its great for hiding the default joomla /cache/xxx directory. Cached files are always stored physically on disk into the joomla cache directory, subfolder /assets. So, usually thats /cache/assets. You can't change that because thats the only way to clean jFinalizer cache using the joomla builtin cache manager. Re-routing the delivery path works by placing a symlink to /cache/assets. You need shell access. Login to your server and create a softlink. For example on linux, if you want you delivery path to be example.com/inc, you would create the symlink using bash># ln -s /my/absjoomlarootpath/cache/assets /my/absjoomlarootpath/inc and then insert inc/ into the delivery Path field. Note that Apache might check symlink permissions. They need to be set correctly.
Advanced: Remote File supportLet Finalizer try to include asset files that are not stored on the actual server. This option is experimental - we need feedback on this! The PHP directive allow_url_fopen must be enabled. Also, please note that any files containing a "?" or other suffixes, like style.css.php, are considered dynamic and are always skipped.
Advanced: joomla subdirectoryTell jFinalizer if joomla is installed in a subdirectory. Unfortunately, joomla might do strange things sometimes when installed in a subdirectory. Although there is a $live_site directive in joomla's configuration.php, this setting might break some 3rd party components. jFinalizer itself is not affected by that issue, but other than most joomla core components it needs to reconstruct url's that are already parsed out. So, to be more compatible, we decided to give that extra switch. Also, it accelerates a bit because we have less string processing to to. Please not the spelling: if your site is installed into www.example.com/joomlarootdir, you must enter /joomlarootdir - not joomlarootdir/, joomlarootdir, /joomlarootdir/ or example.com/joomlarootdir
tips, tricks, troubleshooting
known issues
A Primer On Compression EfficiencyWhen you apply output compression or optimization, either on HTML, JS or CSS, you have 2 things in your mind: You want to reduce server load and you want to speed up your clients page loading. Unfortunately, involving compression is always a tradeoff. No matter how efficient the algorithms are - the better the compression, the more CPU usage is needed on the server side. For example, speaking of HTML compression, this involves a lot of additional checking to make sure no inline JavaScript functionality or CSS design breaks. When we first designed jFinalizer, our goal was to reach maximum compression with minimum server CPU load while being as compatible as possible. To keep the tradeoff between compression ratio and CPU usage as balanced as possible, we have setup a reference page and kicked all algorithms which cause jFinalizer to exceed a total runtime of 5ms. We figured that it does not make sense to build a system plugin which requires Page Caching to keep performant. Since we got lots of feedback from jFinalizer users while (still) being in beta, we could evaluate many different 3rd party components and their behavior on compression. After lots of comparison, we decided to give the go for our newest DeTab compression algorithm: Compared to all others, it does not completely remove line breaks. At first, we did not like that at all. But after statistics evaluation, we were quite surprised. The total increase of HTML size is only minimal, typically between 0.5-1% compared to other algorithms. Now that was good news. Removing line breaks causes heavy problems with inline JavaScript and needs a lot of reconstructing. We have a great balance now: execution time on our reference Page reduced to <2ms and the algorithm did not break any JavaScript yet. So with the help of many jFinalizer users, we think that we have found the perfect tradeoff for jFinalizer and plan to go from beta RC to the first official release. changelog1.0.0 1.1.0 - download archive plg-system-jfinalizer-1.1.0.zip Comments & Bug ReportsWhen posting a bug report or problem, don't forget to post the jFinalizer version. If you use HTML compression, tell us what Mode you use. |



Comments
- Problems compress html. The plugin is putting js in a declared CDATA and not closing this parameter correctly. This causes the extensions that use js to stop work. In my case the plugin rokbox and a module for the LiveZilla
Even so, I stopped using CssJsCompress because JFinalizer is a little more sophisticated, it provides some features (which does not work) that does not provide CssJsCompress. As the compression of html.
To solve the problems I encountered, I deactivated compression html (which was what most excited me) and put to gzip using PHP instead of htccess: (
If you resolve the problems, the plugin will most wanted genre without a doubt.
My site is the site-desenvolvimento .com.br and my personal e-mail the rdeprera@gmail.com
Also, as of release 1.0.4 we added the ability to have a custom .htaccess file for specific server configurations. I hope that can help you serving gZip using htaccess. Unfortunately, .htaccess delivery highly depends on server configuration and need almost expert apache knowledge to configure. Please see the gZip config section of this page for some more hints on how to implement.
So whoever wants to use it: Read what the developers say everywhere and consult the documentation!
Thanks for this plugin!
Ich vermisse die Möglichkeit bestimmte css und Jacscript auszuschließen.
Ich habe bei mir jomsocial und Cometchat am laufen, bei beiden werden danach die css und javascipt Dateien nicht richtig geladen.
lg
one short question. in tidy mode the charset in source code is set to "us ascii" but i need UTF8. how can i change it to the right setting?
cheers
sascha
You cannot really change this by yourself since its hardcoded. But you are right, utf8 makes more sense. Unfortunately, Tidy does not recognize the input char encoding automatically. Thanks for the hint!
Please remember to not use Tidy on production sites since it will add lots of unnecessary bytes.
Everything works really well. The only thing I had to limit was the html compression level due to a googlemap plugin (extensions.joomla.org/.../1147).
Only safe mode A worked, otherwise I believe that "if" & "else" statements in the javascript written without brackets { } break...
Safe mode C+ is almost identical to Safe Mode C but keeps a little bit more whitespaces. Its also a very efficient / fast algorithm.
Fantastic pluging !!
But i have the same problem with google-maps.
I believe this due to the fetching of js from google-server and not from local filesystem ?
Would be great if this could somehow be considered and solved in upcomming release.
thx very much
Frederik
Warning: get_class() expects parameter 1 to be object, array given in C:\wamp\www\its mypik\plugins\s ystem\jfinalize r.php on line 152
for now i have disabled the plugin .
i cant get the firststep to work lol .
forget about goin to next once X_X
Thanks for Jfinalizer. I have started to use it but got a problem that I think can have to do with Jfinalizer but not sure. I have a register page that work fine in Firefox but it doesnt work in IE 8.
travelmate.com/.../... Here is the reg form that doesnt work as it should in IE 8. Thanks!
developers.facebook.com/.../
Of course, the idea of having a "recompile joomla!" button in the backend sounds very charming :)
Great plug in! Was wondering if there were any implications with using the htaccess method if you are already using an htaccess file on a site.
Thanks again.
But please note: make sure the jFinalizer .htaccess file is compatible with the settings of your own .htaccess file. Maybe you do path overrides that need to be included.
This is how jFinalizer .htaccess works: it copies a .htaccess file into /cache/assets. Only this directory is influenced by the jFinalizer .htaccess file. However, you can edit the jFinalizer .htaccess file to your personal server needs.
Please read the gZip documentation on htaccess very carefully (especially on how to copy the file)!
So am thinking that I would have to add
AllowOverride (Path to the plug in htaccess file.
That correct?
Did you try to use htaccess delivery already out of the box of jFinalizer? What happens? For example, if you use joomla SEF URLs with mod_rewrite, everything should be correct already.
If some of your htaccess files disallow htaccess files for the /cache directory or deeper by using AllowOverride None, then you might need to change it somewhere to AllowOverride All.
A simple check to see if htaccess files work in a specific subdirectory it to place a htaccess file in there which disables total access by asking for a valid User. But before doing that, make sure you can manually delete the file again using ftp / shell access! example .htaccess file:
RewriteEngine on
AuthType Basic
require valid-user
If everything works, Apache must give you an misconfiguratio n error when you try to access this directory since no password file is found. So if you get an ERROR, you know that htaccess files WORK :)
Currently using mod rewrite with no problems. SEF urls and non www redirect as well
I'll have a look at what you're saying and let you know!
If your template totally breaks (looking like there is no css file at all), you might have to adjust the htaccess file (see gzip notes above - again).
You can check if gZipped htaccess delivery works be using firefox with the firebug plugin: If you load your site, take a look at the Network tab, locate the /cache/assets/xxxxxxxxxxxxxx.css file and see if the headers say that its compressed (gzipped).
There are several issues on customizing the htaccess file. Take a look at htaccess.default.php and understand what it does. For example, if your server compresses CSS files by default and the disable deflate switch would not work as expected, your files get double-compressed and the client cannot open it anymore.
I'm sorry we cannot really help here. But as stated above, htaccess delivery highly depends on your very specific server setup and usually needs to be adjusted, which requires a bit apache rewrite knowledge.
Interestingly enough I have it on another domain (same server) where it works fine in htaccess.
I'll have to compare the two more closely!
Wenn ich habe "protsess CSS" und "check conditional exception" umgehängt, entstandene zwei Probleme:
-"Core Designe Login" Modul arbeitet nicht so korrekt - popup Fenster ist immer vordergründig.
-im Bauteil K2 ändert Größe und Stil von Einreise.
Ich benutze in meine Seite VirtueMart Software mit VM Junction, Blade Ausstattung. Wenn ich habe "fast - builting crunch"
umgehängt, dann tab arbeitet nicht im Seite Beschreibung von Produkt.
joomla 1.5.14 - WIMP - jfinalizer last version
I have problem with process CSS: yes and gzip: PHP
jslow says me new css is
www.people4you.it/.../
but nothing in assets, the url is not correct and the file i see in jslow is like this:
If no files are in the /cache/assets directory, it might be possible that the directory is not writeable by joomla. Could that be the case?
The URL you posted is missing slashed. They seem to be URL encoded. jFinalizer does not do that, it always uses the joomla DS constant for adding directory separators.
The plugin works on HTML and CSS but cant seem to work on IE when I enable javascript processing. From what i understand from my IE developer debugger, it seems unable to load the mootools library because it keeps on saying that the addEvent method of window doesnt exist...
solving this would really help alot.
Thanks for the plugin anyway! ;)
2. turn off CSS and HTML processing totally, just enable JS processing
3. If the error you mentioned still happens, give us another feedback.
So far, mootools loaded fine on all sites we've tried on. Maybe we need a bit more information on your issue...
to the developer: VERY GOOD JOB!
We will try to get a hold on the developers of jomsocial and see if we can grab a developer copy. Its an important component to joomla, we understand that. We really need to do tests, but as you can imagine, we just cannot buy comercial components for testing :(
We will get back on you, but it will probably take a couple days...
Hi guys,
it looks like it has problems with RSS this time, Simple RSS Feed Reader from Joomla Works, the plugin does not let generating the RSS, any idea what to do?
thanks,
Avi
thank you
The only two problems I have run into so far is the issue with Googlemaps (HTML compression Safe A fixes that), and highslide.js seems to break as well.
Not bad for a plugin that does so much. Thanks again and keep working on it :)
The jQuery conflict resolver might become an option at one of the following releases.
Zipping is a different approach. By removing whitespace, the file gets more compact, its size decreases. When simply zipping a file, the client browser (or search engine) unzippes all data and the size is the same as before.
Some search engines rate a file-size-to-readable-content ratio. In this case, optimization might help a bit!
Also, most web servers gzip output anyway. So when you use jFinalizer, your compacted HTML gets gzipped before delivery. This way, you get smallest possible document size using both methods together.
fFinalizer Error: cannot write to file jFinalizer
Anyway there are a lot of things to implement - correct client side caching for assets, correct (CPU efficient!) HTML minify / comments striping, dynamic files handling. And so on. Good luck :)
Line 355: Premature end of data in tag html line 1
…r) {}
Both are not working :
tools.yootheme.com/.../...
extensions.joomla.org/.../...
Thank you for your hard and excellent work.
Can you tell us what was specifically not working for you?
Thanks for this great plugin
It has bug (at least xampp on windows) it implements compressed files in this way that (at least) css won't load:
the url of embeded css that creates 404 error is like:
/cache\assets\d0 63c76c443613cf9d89788459af6 c6e.css
and if I change the \'s with / it with generate a 500 server error
Looking forward to hear from you
magj
I think Yoologin has some css compression enabled by default and it has problems with jfinalizer. The buttons disappear altogether.
I've noticed some minor issues with other modules but I disabled those just to have jfinalizer enabled.
Please expect the next upcoming release arround March 25th.
Also, MooFaq stays expanded on all compression levels minus safe mode A (Only when "process HTML" is enabled.
This is a great little program. Thank you. I hope that there can be a fix somewhere for the RokSlideshow and RokStories.
On a side note, RokBox works perfectly. Thank you again.
Other then that, it seems to work great on all the other several components and modules I have installed.
Ajax search (RokAjaxSearch, YooSearch) These will bring up 0 results when you do a search. I have tried both of these on Rhuk and Dominion templates.
It happens when you have either "process JS" and/or "process CSS" to yes.
All compression levels.
Im sorry to post a second time. For now, I can keep these off. I do not know if you have many people that use any of the RocketTheme templates and or mods. If not, then I fully understand if these are on the end of the list of things to do.
thanks for the report. With the current release, 1.1.0, we could get RokAjaxSearch running in the new DeTab compression mode. Unfortunately, Yoosearch requires purchasing the component so we don't have access.
Anyway, RokAjaxSearch does not return any results on our site for "local" at all, no matter if jFinalizer is running or not. Google works fine.
I've been testing your plugin. Very impressed so far.
On windows machines, the issue with DS is that DS meant really for file I/O. HTTP uses / on all systems.
Using DS causes problems in 2 areas as far as I can see:
1. The and lines in _writeJs and _writeCSS. The backslash is seen (by FF at least) as an escape code so you end up with "....assets3465..." instead of "...assets/12345..."
2. CSS url()'s get corrupted, especially if you have a "../" in the original. Thus BG images tend to disappear.
The first issue can be "hacked" by changing _writeJS (and _writeCSS resp) to the following:
$fly = $this->gzipmode == 1 ? 'js.php?' : '';
// Build URL
$url = '/'.$this->outPath.$fly.$jsFile;
if ( DS != '/' ) $url = str_replace( DS, '/', $url ); // HTTP uses '/' universally
$l = ''.PHP_EOL;
I haven't worked out the workaround the CSS issue yet. Have you by any chance?
Your plugin seems much more feature rich and sensibly constructed then the others. I look forward to working out the kinks and using it on my sites.
-HKS
The CSS bug you mentioned will be observed on the next release too.
Good work - thank you!
I'll see if I can work it out for you when I get into that phase of the website I'm building. What's the best way to get word about the latest releases? Do you have a list?
Issue #2 You can fix in the latest release by changing lin 72 in helper.php from:
$this->tmp = substr($fn, 0, strrpos($fn, '/')).DS;
to:
$this->tmp = substr($fn, 0, strrpos($fn, '/')).'/';
Cool!
Thank you for checking and the code! That's another important fix for the Windows setups. Verified and committed into 1.1.6.
Warning: fopen(/root_path/joomladir/joomladir/path_to_css/file.css)
As you can see the joomladir repeats.
The asset folder created correctly inside cache folder.
Thanks for your support
1.- You need to declare global $mainframe to work, my template hasn't this.
2.- I'm testing only with js, and I only get the first jsp var value (jFJSxPL)
And thanks for your support.
the variable name "$mainframe" is just an example. You need to know how to program joomla, thats why we say its "advanced": $mainframe, in the example above, refers to the joomla application framework object. You need to get an instance of it and then trigger the events.
2: I'm sorry, please explain a bit more detailed
There any way to include the return value from addScript, addScriptDeclar ation Joomla functions inside the unified js file instead inside the html file?
Or How can I do to order the javascript declarations?
I have javascript errors because I have function calls before their statements.
Thanks
I did more tests and my previous comment is related to the same error with the joomla subfolder.
template: rt_versatility4 _J15
compression: moderate (c+ didn't work with yooslider)
tried to process css, got an fopen warning:
fopen(/var/www/server/public_html/modules/mod_yoo_slider/mod_yoo_slider.css.php" type="text.css) [function.fopen]: failed to open stream: no .... /file/php line 240
(note the quote placements...)
Also of interest - if you load a css from a cdn, you get a similar fopen error :
fopen(/var/www/server/public_html/http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js)
as there are no more posts since a week or so, i thought it might be a good idea to ask if there are any concrete details for next release.
I still have problems with googlemaps and wonder if this is solved with next version.
Are there any beta-testing-options ?
brgrds and have a nice week.
Frederik
I tried to install JFinalizer but when I activate it, I get bunch of "File not found" errors for many js files and css files. Looks like the path of the file adds my root folder twice. I have installed joomla under /cms and it looks for files under /cms/cms .. can you please help me fix it and speedup my site?
what is the exact command I need to use??? Thanks!
can not be used in a subdirectory?
I have problem with the rating and the other Ajax fuction with the componet hwdVideoShare.. can you help me?
This is a must for all my joomla sites.
I have just one issue could not resolve.
When ever I delete cache search link component gives following error
fFinalizer Error: cannot write to file: /www/xxxxxxxxx/xxxx/cache/assets/d41d8cd98f00b204e9 800998ecf8427e.js
I have to expire cache since my site update frequently. As soon as I refresh (not come back to the page) the page issue get resolved.
Any body had this issue?
the jomsocial feed is not working with any settings :-(
error: Fatal error: Class 'JFeedItem' not found in...
best regards
I´m sorry you still have problems with JomSocial. Unfortunately, we cannot reproduce them here. Can you please contact us by email at techsupport@far bfinal.de ? We are curios to work on this issue.
PS: according to JomSocial, we cannot get news feed contents in Safari, no matter if jFinalizer is active or not. Can you verify this?
getting this error: jFinalizer Error 401: asset file not found: derberliton.de/.../...
after process JavaScript , can you help?
thanks
after using process CSS I get this erors:
jFinalizer Error 401: asset file not found: components/com_community/templates/default/css/style.css
jFinalizer Error 401: asset file not found: plugins/content/calendar_stamp/classic_red_dar k.css
I had to turn it off again and use only compact CSS and check conditional exceptions,
any idea how to fix that?
thanks
So before using jFinalizer you should make sure your site validates against W3C. Please understand that debugging on a non-valid page is a huge challenge.
Plugin works GREAT. Like the author said, it goes from host to host so you must play around - but it's worth it your time.
Now for my question, has anyone tried this with Joomla 1.5.17 ?
I get the error :
Fatal error: Cannot assign by reference to overloaded object in /xxx/xxx/public_html/plugins/system/jfinalizer.php on line 156
This is not a configuration problem, it seems that line in the code:
$mainframe->jFinalizer =& $this;
Any ideas ?
Anyway, we will investigate that issue deeper since we cannot reproduce that behavior on any of our test sites yet.
I have managed to get it up and running but am encountering a slight problem.
The issue is the level of HTML compression, now I am running Joomla and phpBB3 with the jFusion bridge, when I have the DeTab HTML compression on, whenever a user edits or quotes a post, all line breaks are removed. This happens in all compression levels except "Safe Mode A" would there be any way to fix this? I know I could just stick with Safe Mode A but if I can fix this small issue I can use the faster DeTab one.
Cheers!
Just like to say that this guy does a top job at what he does, very helpful, insightful and he'll help you as best he can.
Unfortunately there are a few problems with my site which stop jFinalizer working to its full potential but he advised me on the problems and the reasons.
Support like this, I'm surprised it isn't a commercial plugin.
Top job!
getCompressedJs works ok.
if (method_exists( $observer, $event))
...
with $observer being the jFinalizer plugin and $event being the 'getCompressedCS S', and it seems to evaluate to false!
Please shed some light on why that is so.
Because of this I had to deactivate your plugin. Hope you can find what is wrong so I can reactivate it soon, since it is giving some very good results.
e.g.
system - all other plugins
system - sh404sef
system - jFinalizer
system - Cache
If it is where do you find this and if so how do you know or waht do you see.
Just currious on how Gzip works..
thank and great product.. SHould i use this with smartoptimizer or is that OVERKILL
Just still on my test site for the time being..
politicaboricua.com/.../page1
Thanks
I´m sorry, but I can't really see what the problem is. Can you explain please?
jFinalizer Error 401: asset file not found: myweb/.../jomsocial.css | hide
i havent install jomsocial yet!
after i have checked remote CSS YES, it's no display error
dont u think this is error need to fix do u?
Some part of your joomla installation, maybe a component, the template itself or a module, must push a link to that file into the output html. jFinalizer does not do that. It only processes what it finds in your HTML source.
Thanks for great plugin, works great, just one thing. When I turn CSS process on, my website doesn't show up with CSS. It's "naked". Any idea how to fix this?
Thank you!
process: /home/perop/public_html/terbo/plugins/system/cdscriptegrator /libraries/highslide/css/highslide.css
process: /home/perop/public_html/terbo/templates/yoo_symphony/css/template.css
process: /home/perop/public_html/terbo/templates/yoo_symphony/css/custom.css
process: /home/perop/public_html/terbo/templates/yoo_symphony/lib/js/mootools.js
process: /home/perop/public_html/terbo/plugins/system/cdscriptegrator /libraries/highslide/js/highslide-full.min.js
process: /home/perop/public_html/terbo/plugins/system/cdscriptegrator /libraries/jquery/js/jquery-1.4.2.min.js
process: /home/perop/public_html/terbo/plugins/system/cdscriptegrator /libraries/jquery/js/jquery-noconflict.js
process: /home/perop/public_html/terbo/plugins/system/cdscriptegrator /libraries/jquery/js/ui/ui.core.js
process: /home/perop/public_html/terbo/media/system/js/caption.js
process: /home/perop/public_html/terbo/templates/yoo_symphony/lib/js/addons/base.js
process: /home/perop/public_html/terbo/templates/yoo_symphony/lib/js/addons/accordionmenu.js
process: /home/perop/public_html/terbo/templates/yoo_symphony/lib/js/addons/fancymenu.js
process: /home/perop/public_html/terbo/templates/yoo_symphony/lib/js/addons/dropdownmenu.js
process: /home/perop/public_html/terbo/templates/yoo_symphony/lib/js/template.js
jFinalizer runtime Information
plugin total runtime: 3.00589s
JS files merged: 11
CSS files merged: 3
HTML Bytes saved: 3028 (20.4%)
DESIGN MODE (develop - slow!)
Do you have any idea how to fix this?
For further debugging with jFinalizer enabled, you might load your page, take a look you HTML source code and find the line that loads jFinalizer CSS (something like /cache/accets/82678Ab7268XXXX .css)
Then, you can copy this URL and see if you can open the CSS manually in the browser or using some other GET command.
jFinalizer Error 200: Subdirectory path set but incorrect:
jFinalizer Error 201: Resulting physical path from given subdir does not exit: /srv/xxx/xxx/xxx/httpdocs
jFinalizer Error 202: Tip: if your joomla installation subdirectory is example.com/joomladir, use /joomladir, not joomladir/ or /joomladir/ or joomladir as subdirectory entry
I've tried different templates, set jFinalizer position to last, tried debugging, but I just can't seem to get manual tag placement to work.
Now, the issue has been mentioned above but I don't think it was addressed. I moved a Joomla install between servers and everything was dandy. I uninstalled the last version I had (1.1.3) and installed 1.5, but as soon as I disabled all other custom plugins and tried to process CSS, JS, or enable any other option, I get:
jFinalizer Error: cannot create file: /home/mydomain/public_html/cache/assets/a39cce7d571673fd91d2b9a56c6e7fd3.css
mod_rewrite is active, as is symlinks, and the directory location doesn't seem to be an issue. Any ideas? (I disabled cache and re-enabled cache too, to no avail.)
Thanks!
jFinalizer Error 401: asset file not found: /hp/templates/yoo_vox/lib/js/mootools.js
jFinalizer Error 401: asset file not found: /hp/media/system/js/caption.js
jFinalizer Error 401: asset file not found: /hp/templates/yoo_vox/lib/js/addons/base.js
jFinalizer Error 401: asset file not found: /hp/templates/yoo_vox/lib/js/addons/accordionmenu.js
jFinalizer Error 401: asset file not found: /hp/templates/yoo_vox/lib/js/addons/fancymenu.js
jFinalizer Error 401: asset file not found: /hp/templates/yoo_vox/lib/js/addons/dropdownmenu.js
jFinalizer Error 401: asset file not found: /hp/templates/yoo_vox/lib/js/template.js
jFinalizer Error 401: asset file not found: localhost/.../...
jFinalizer Error 401: asset file not found: localhost/.../...
The files are there and another Js combiner that I tested worked. Is there anything else required to make this work?
Thanks.
my frontpage shows "PAGE LOAD ERROR: The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression."
here my setting,
a.imagehost.org/.../...
If thats the case, your server probably does dynamic runtime compression already. In this case, you have to either adjust the .htaccess file (see tutorial above), switch delivery mode or even disable compressed output.
Warning: fopen(/var/www/vhosts/bttmatosinhos.com/httpdocs/cache/assets/76a6ff790d4d88e 2ebee60f64ee136a6.css) [function.fopen]: failed to open stream: Permission denied in /var/www/vhosts/bttmatosinhos.com/httpdocs/plugins/system/jfinalizer/helper.php on line 169
jFinalizer Error: cannot create file: /var/www/vhosts/bttmatosinhos.com/httpdocs/cache/assets/76a6ff790d4d88e 2ebee60f64ee136a6.css
Guess: are you using the backend FTP mode? It could be possible that your files where installed by the FTP user (see UID) and joomla runs as another user, either under Apache or some own UID.
If thats the case, you must change the permissions on the /cache directory so the user/uid of running joomla (maybe 10061 in your case) can write. Use CHMOD or some FTP program to change permissions.
I just installed an configured jf.
Before I did, I ran a speed test @ analyze.websiteoptimization.com
I am getting 20.81 seconds load time for T1 line.
After installing and configuring jf, clearing my cache, and reloading the site, I ran it again..
20.81 seconds...
And yes, I did switch it into production mode.
I got a few of the mentioned 'assets not found' errors, even though the files are present..
I had hoped for some serious improvements!
I still do...!
Martin
as long as you get "asset file not found", there is definitely something wrong and you can't really expect a performance boost. Please review or post the output of the jFinalizer debugger.
thank you for the answer.
Error report says:
process: /web/akvarieplantete st/templates/yoo_phoenix/css/template.css
process: /web/akvarieplantete st/templates/yoo_phoenix/css/custom.css
process: /web/akvarieplantete st/modules/mod_agoriansonl ine/agorians_online /agorians_online .css
process: /web/akvarieplantete st/modules/mod_agora_lates t/agora_latest/agora_latest.css
process: /web/akvarieplantete st/modules/mod_vitallogin/css/modVitallogin.css
process: /web/akvarieplantete st/components/com_sobi2/templates/standard_advanc ed2/css/standard_advanc ed2.css
jFinalizer Error 401: asset file not found: templates/yoo_phoenix/css/ie.css
jFinalizer runtime Information
plugin total runtime: 0.01910s
JS files merged: (JS processing disabled)
CSS files merged: 7
HTML Bytes saved: 6425 (9.6%)
DESIGN MODE (develop - slow!)
hide
Now the file it refers to.. ie.css is not missing.. but maybe that's not what it is referring to?
I just found this error:
Warning: strstr() [function.strstr]: Empty delimiter in /web/akvarieplantete st/plugins/system/jfinalizer.php on line 392
listed about 14 times on agora forum on my site... it goes away when I disable javascript processing
Example: dummy.js,dummy2,js
no, I haven't removed any entries. They're still there untouched.
Are you sure it can only be related to that?
getting this error after upgrading to 1.8 rc1 jomsocial.
any idea or help will be most welcome,
thanks,
Avi
jFinalizer Error 401: asset file not found: /media/system/js/openid
We have had some trouble on jomsocial with the plugin causing errors because it writes links to JS / CSS files into the HTML output of files that do not exist. Of course, jFinalizer will raise an error then. A workarround it to create a empty file on that location until the jomsocial team fixes the template / output.
asset file not found: /components/com_phocamaps/assets/js/geoXML3.js
Thanks.
process CSS ? No [Yes]
compact CSS ? [No] Yes
check conditional exceptions ? No [Yes]
...causes problem with @fontface declaration in Chrome(other css works fine), and other browsers don't have any problems.
I have written some of the things that might improve jfinalizer. hope these help.
Version 1.1.5 for joomla! 1.5.10+
Joom;a 1.5.18
- option to move / compress inline javascripts to bottom/top or leave alone
- ability to add inline js files to the aggregated file
- gzip htaccess mode, add note to tooltip that jfinaliser creates a .htaccess files in its cache folder
- rather than this automode for script placement have the following options for javascript auto/manual/ after / just before , this would stop the need for template altering, do we need the same for CSS
- cache lifetime in s , additional note that this is the seperate cache for the aggregated CSS and JS files, not main cache
- explanation of the different compression modes
- additional tooltip note that production mode = cache on, and development = cache off
- additon to 'Quick workflow guide for setup:' - if you get errors check the system plugin order (i had issues with this where it moaned about my geshibot js file being missing, i moved jfinalizer to load after the content plugin. i only figured this out because i have been messing with plugin orders).
thanks for the plugin
shoulders
Joomla 1.5.18
Yootheme Phoenix
in the HTML source code of my browser on my homepage and when jfinalizer is running the CSS is refernced by 1 CSS link. when i ran YSlow it kept saying there were too many CSS files. All the template CSS were listed. So i looked at the cache file and rather that the CSS all in on file i got several references like the following which sort of makes the aggregation a bit pointless.
@import url(/templates/yoo_phoenix/css/layout.css);
so in this cached file were more links rather than it as one great big CSS file.
please help
Thanks shoulders
{geshibot}
a text box where you could enter these so when i paste code snippets on a page they are left alone.
thanks
and it seems to be ignoring jcemediabox.js
----------------------------------------
Header size = 240 bytes
Up to 29430 bytes could have been saved through compression.
jFinalizer is ignoring jcemediabox.js
And oh yeah still having this Gzip IE issue can anybody help me (read above) Gzip works on all browsers apart from ie6 making the option useless to me :(
i have a problem concerning my jfinalizer. if i have at least 10 textareas in my html buffer it seems like jfin puts the last digit after the textarea closure tag.
has anyone the same problems?
jFinalizer Version: 1.1.5
Compression: deTab
Mode: Live
kind regards and thank you in advance
carsten
Looking forward to seeing the next version :-)
RSS feed for comments to this post.