Hi there, I've had several members reach out and ask why there isn't a "save as draft" feature for topics. It's a good question to be honest.
Some members want to put together a long, thoughtful topic about an anniversary for something coming up, for example, but they have to do it in Google docs. It's a little bit of a hassle.
It'd be great if members could save drafts before publishing. Thoughts?
That's the issue most likely then. The environment I use doesn't have a PHP 8 package available yet so I need to setup a different one from scratch for it.
For now it's probably faster if I just investigate the error on your server. Can you please send me a temporary FTP account as well in the PM?
@Subdreamer Actually hold on about that PM. I just had a quick talk with @Adriano Faria and he gave me a clue of what the issue possibly is. I'll send you a PM myself with an updated version of the plugin for you to test. I'll send it either tomorrow or in the weekend. 👍
@Subdreamer What PHP version are you using? If I remember right someone else mentioned plugins throwing error with PHP 8 but I've only tested them up to PHP 7.x so far. In case can you send me a PM with an ACP account for your site? Not sure what's going on exactly but I can have a look around.
Hi, @InvisionHQ! I have an active license for the original Clubs Enhancements plugin. Could you transfer my license to the new plugin? Thanks in advance!
Default IPS CDN support would be excellent but this seems like an alternative. I use MaxCDN as my CDN for all my sites. However, I guess I'll start using Amazon S3 with this plugin for all my IPS-powered sites.
Hi @BostonBob
The plugin currently just adds the additional headers to the files stored in an S3 bucket, I still use Cloudfront personally but I'm thinking the brand of CDN you use in front of your bucket to distribute your content shouldn't make any difference.
The plugin currently doesn't do anything involving Cloudfront or any specific CDN, it just improves the files created as they get stored on your S3 bucket. As long as you are using S3, or as pointed out by a reviewer on the file, it also works with one of the S3 compatible type providers called Wasabi.
So if you were just using AWS S3 on its own without a CDN, that's fine, the visitor's browser would get the extra headers that the plugin added. If you add the url of your CDN into the AdminCP storage configuration, it should work just the same.
I could probably make a test version.
Default IPS CDN support would be excellent but this seems like an alternative. I use MaxCDN as my CDN for all my sites. However, I guess I'll start using Amazon S3 with this plugin for all my IPS-powered sites.
Afterburner - S3 Advanced Caching (Lite) is a plug-in which helps improve cache performance on compressed, cacheable IPS Community managed CSS and JS files (Theme Resources) stored remotely on Amazon S3.
Increased Caching Performance - Helps reduce page loading times.
Increased Caching Efficiency - Helps reduce server load, bandwidth costs.
Potential to boost SEO performance, since Google favours faster loading websites.
Low cost provides a high Cost to Benefit Ratio.
One off price, includes free compatibility updates for current major version of IPS.
Easy to install. Starts working immediately in conjunction with IPS background tasks.
Lite version requires no additional configuration in AdminCP. After installer/updater completes, just run the Support Tool to rebuild your theme cache at S3.
Works on all installed themes JS/CSS resources, both official and third party themes, with no limit on number of themes.
Just leave Enabled. Can be removed at any time, but of course you would instantly lose the extra headers & related benefits if disabled or uninstalled.
Adds additional Request Headers automatically to each relevant, publicly cacheable, compressible IPS theme JS/CSS file.
Works silently in the background, whenever IPS Community Suite exports theme resources to AWS S3. Even if you install a new theme.
Improves the individual Vary: Accept Encoding PageSpeed test score at GTMetrix, and overall GTMetrix scores.
Improves the Add Expires related YSlow test score at GTMetrix.
Helps maintain an A(100) GTMetrix Pagespeed score on your Amazon S3-hosted IPS Theme JS and CSS theme files in the background. (If you also have other third party compressed files hosted elsewhere, such as Google APIs etc, they are beyond our control but Afterburner will still boost the test rating for your relevant IPS Theme Resource files that you host at S3).
Requires working AWS S3 or S3 compatible storage bucket.
Works either with or without an optional CDN such as Cloudfront, Cloudflare etc.
What's it for?
This plugin was created for IPS Community admins who in particular seek the benefits and efficiency of increased caching performance. After a lot of research, trial and error trying to resolve the problem of Amazon S3 hosted, compressible IPS4 theme resource not passing the GTMetrix.com Vary: Accept Headers and YSlow Add Expires tests, which effectively means lower GTMetrix scoring.
After finally confirming the additional caching headers needed for compressed, cacheable files to pass the Vary: Accept Encoding PageSpeed and YSlow Expires tests, it quickly became clear that if you want to maintain persistent higher score ratings and the associated performance and efficiency benefits there was a slight caveat.
Due to the frequency that those resource files get regenerated, re-cached and re-uploaded in the background to your S3 bucket, it can quickly become a time-consuming, frustrating and repetitive task as it requires the admin to keep manually replacing the additional headers via the Amazon S3 Management Console (sometimes multiple times a day depending upon the circumstances).
When AWS S3 hosted Gzipped/Brotli-encoded JS and CSS theme files change, either manually by the admin such as installing or updating a theme, plug-in or app, running the Support Tool or following various automated system tasks, the additional manually added headers are lost.
Therefore, a plug-in to automate the process of adding the additional headers would seem an ideal, easy to use alternative solution compared to say, writing and maintaining an Amazon Lambda script to inject the necessary headers.
So how does it work?
IPS 4.4 has a lot of great performance improvements already, but if you opt to use Amazon S3 to store your IPS Community theme files, Afterburner S3 Advanced Caching (Lite) will automatically add additional caching headers to each of the relevant publicly cacheable, compressible theme JS and CSS files, whenever IPS Community Suite exports them to S3.
Afterburner Lite automatically adds Expires headers to each .gz file which are set in this Lite version to automatically expire after 8 days, sufficiently long enough to pass the relevant GTMetrix Vary: Accept Encoding test. See the attached screenshots on the download page for more.
Afterburner automatically works via Curl or Socket IPS file transfers by hooking into both, depending upon how your server is configured.
Afterburner therefore helps improve caching performance on those S3 hosted theme files, which in turn helps reduce page loading times throughout IPS Community Suite, whichever apps or third party add-ons or themes you have installed it doesn't matter.
Thanks to BFarber for suggesting alternative HTTP hook-points.
How do I use it? Does it have any adjustable settings?
This is the 'Lite' version which requires no further configuration after installing. I recommend running the Support Tool afterwards, see TIPS section below. The necessary caching headers it creates are pre-set to expire after 8 days, the minimum recommended. Afterburner (Lite) doesn't alter anything else but S3-hosted theme JS and CSS files in transit to your S3 bucket.
This is my first plugin for IPS. If there is enough interest, I'm hoping to create a more fully featured app version with additional features, stats and admin configurable Settings etc, so you can tweak the caching performance to suit your individual needs.
Requirements
Compatible with latest IPS Community Suite 4.4 series. Developed on 4.3 and tested on 4.4.
Requires a pre-configured and properly working Amazon AWS S3 storage bucket (Versioning mode recommended), correctly set up in IPS Community AdminCP to host your Theme Resources (Files > Storage Settings under Theme Resources). See the IPS Help Guide for more.
How do I install Afterburner?
This is an IPS plugin, so after downloading it, install the Afterburner XML file via the AdminCP > System > Plugins > Install New Plugin facility.
IPS Community will install the plugin and enable it, and Afterburner will then inject the relevant additional caching headers to your js.gz and css.gz files as they next upload to your pre-configured S3 bucket used for Theme Resources.
TIPS
I do recommend running the AdminCP Support Tool after installing/updating the plugin to re-cache and upload ALL relevant files rather than waiting for the next scheduled task or manual action that will update them.
If you are also using a CDN such as Cloudfront, Cloudflare etc, I also found it useful in testing to clear/invalidate Cloudfront/Cloudflare afterwards, instead of waiting for them to next update themselves when they check for updated files and send to their respective Edge locations.
How to update to a newer version of Afterburner?
To upload a newer version, just use the usual Upload New Version button next to Afterburner in your list of plugins.
Does it work on cloud hosted IPS Communities (CiC)?
I don't see why not, as long as you have S3 hosted theme resource files. I only have self hosted IPS sites myself.
How do I know it's working?
There are a few ways to test.
You can benchtest your site at GTMetrix before and afterwards. Look out for the Vary: Accept Encoding Pagespeed test score.
Before example:-
GTMetrix is advising us that these theme JS and CSS files hosted at S3 do not specify a Vary: Accept-Encoding Header.
After example:
You should see a A(100%) score for the test after installing Afterburner (unless your site also uses other external cacheable compressed files etc which you don't have control over such as at Google APIs etc which would reduce it).
If you then look at the Waterfall tab, you should see similar to this:
Alternatively, you can use the Amazon S3 Management console to view the Metadata headers on the actual stored gz files as seen in the screenshot below:
Another way to see if the additional Expires headers have been added to S3 hosted cacheable JS/CSS files is to use the developer console in your Chrome or Firefox browser (hit F12 and reload the page):
Profiles on IPS have virtually no meta tags, at all.
This could be improved by adding a link to the users avatar and maybe a general description line like so,
$description = "Explore {$this->member->name}'s " . \number_format( $this->member->member_posts ) . " posts on " . \IPS\Settings::i()->board_name;
$newMeta = [
'title' => $this->member->name,
'description' => $description,
'og:title' => $this->member->name,
'og:description' => $description,
'twitter:description' => $description,
'og:image' => $this->member->photo,
'profile:username' => $this->member->name,
'og:url' => $this->member->url()
];
\IPS\Output::i()->metaTags = array_merge( \IPS\Output::i()->metaTags, $newMeta );
Otherwise links to profiles contain no description or anything aside the default og:image if you have one set in the settings.