Jump to content

ClearCacheAdmin


Soma
 Share

Recommended Posts

ClearCacheAdmin Module

Since there's so many asking how to clear cache. Here comes a helper module that let's you clear caches directly from the admin menu.

post-100-0-67494300-1460762101_thumb.jpg

Additionally it has its own admin page that's a collection of the various caches available in ProcessWire in one place. See some infos and clear them. WireCache (using $cache) caches in the DB and there no way to clear it from the admin. Now you can delete the entries individually or all in one go.

post-100-0-02753400-1460762118_thumb.jpg

Supports following cache types:

- Template "Page" Cache (disk file cache)

- MarkupCache module (file cache)

- WireCache (DB)

- Other files and directories found in assets/cache/ path

Wanted to do this for a long time. It was also great fun to do it and give something to the community to also learn something.

For now it's on github only. Requires ProcessWire 2.6+.

https://github.com/somatonic/ClearCacheAdmin

  • Like 25
Link to comment
Share on other sites

Thanks a lot! Just one question: how about cache/FileCompiler too? Or better yet, any number of custom paths added by the superuser? Maybe I'm asking too much.

Not at all. Yeah why not. But I originally just wanted to be able to trigger the various caches by simply using their own API. I wasn't doing any real operations or deletions just delegation.

I now added support for "Other files and directories in the site/assets/cache/ dir". For now they will now show up in menu and on admin page and you can delete them recursively.

Version 0.0.2 is commited.

  • Like 7
Link to comment
Share on other sites

Hi Soma,

Moved the folder "ClearCacheAdmin" into the modules dir. Clicked Modules > Refresh, got this:

Compile Error: Arrays are not allowed in class constants

FIle: .../modules/ClearCacheAdmin/ClearCacheAdmin.module.php:11

class ClearCacheAdmin extends \ProcessWire\Process{
const exludeCacheDirFiles = array("Page", "MarkupHTMLPurifier", "MarkupCache");

Solution? Thanks in advance.

Link to comment
Share on other sites

New update to v0.0.5.

Lowered minimum required PW version. I just tested it on a install with PW 2.6.10 and fixed some small issues.

Added support for WireCache entries using a selector as expires instead of a date.

  • Like 4
Link to comment
Share on other sites

Damn it. You were faster. I had the same module on my to-do. :lol:  Thanks for the module. Very helpful! ^_^ I have three more points as a feature on my idea list: empty the ProCache and AIOM+ cache when they are installed. Remove all image variations and a short-cut to clear everything at once.

  • Like 3
Link to comment
Share on other sites

  empty the ProCache and AIOM+ cache when they are installed.

Remove all image variations and a short-cut to clear everything at once.

+1 for ProCache

+1 for AIOM+

But ALL imageVariations?? Ugh! For imagevariations, I believe, a per-page solution would be much better.

Link to comment
Share on other sites

But ALL imageVariations?? Ugh! For imagevariations, I believe, a per-page solution would be much better.

Depends a lot on the use case. I'm currently working on a site with roughly 10.000 pages, and because of some recent changes, most of those pages have a whole bunch of unused image variations. Per-page solution wouldn't do me much good here :)

Generally speaking I'd say that a "clear all imagevariations" would be more useful than a per-page option.

  • Like 3
Link to comment
Share on other sites

Depends a lot on the use case. I'm currently working on a site with roughly 10.000 pages, and because of some recent changes, most of those pages have a whole bunch of unused image variations. Per-page solution wouldn't do me much good here :)

Generally speaking I'd say that a "clear all imagevariations" would be more useful than a per-page option.

In some WP plugins they solve such situations by allowing batch deletion of 50 or 100 images, and you can continue the process if there are images left.

Best solution would be, to be able to only remove all unused image variations. Also, the deletion isn't the part what can do much harm to a site or server, I believe, but the recreation of the new variations, especially with (much) multiple requests for pages at the same time.

If a page contains 100 images and each image need to rebuild 5 variations, ... hmm, ...

Link to comment
Share on other sites

Best solution would be, to be able to only remove all unused image variations. Also, the deletion isn't the part what can do much harm to a site or server, I believe, but the recreation of the new variations, especially with (much) multiple requests for pages at the same time.

If a page contains 100 images and each image need to rebuild 5 variations, ... hmm, ...

Again it boils down to differences in use cases. I don't think any of our sites have a single page with even close to a hundred images, let alone that amount of variations.

I would assume that this requires some tricks either way; from my point of view variations are temporary data, so one should always be prepared for them going away, and generating hundreds of variation images at one go sounds like an extremely resource-intensive task. If I had this kind of need, I'd probably try to figure out some method of creating the variations as a background task before the page (or images without variations) can become publicly viewable :)

Anyway, I'm not saying that this isn't a feasible situation, just that it's something none of our sites have. For us it's common to have hundreds or thousands of pages with a few images at tops, in which case a method of cleaning out all variations would be quite handy. On the other hand for use cases like the one you've mentioned above a page-by-page solution would make more sense.

Perhaps two separate solutions would make most sense? Not sure if clearing unused variations is really feasible, considering how they're requested, but of course that would be nice if it was feasible..  :)

  • Like 2
Link to comment
Share on other sites

When removing all image variations, is the removal of CKEditor images safe now? I occassionally use horst's "PageimageRemoveVariations" module that comes with a big warning:

This module let you clear the images cache sitewide, but big WARNING: it also removes ImageVariations from RTE-Fields!

  • Like 1
Link to comment
Share on other sites

@teppo: we definetly need two versions. I think, to clear all at once is the more common one and should have priority. A per/page solution may come later.

@tpr: that's the question. I don't have experiences with RTE's and images. I know that Ryan has done something to be able to recreate variations in RTE's. But I don't know when and in what extend. Think of these use cases:

  1. variation from an imagefield of the same page
  2. variation from an imagefield of another page

The first one can be covered, if I remember right on what I have read from Ryan (don't know where I have read it)

The latter one I don't know. We need to test thouroughly, I think, or ask Ryan what is currently covered and what not. :)

There are three different types:

  • original images
  • image variations
  • orphaned imagefiles

Only the variations belong to the Cache.

Edited by horst
  • Like 1
Link to comment
Share on other sites

I'm planning to support ProCache and AIOM.

But not sure I want to mess at all with image variations. I also don't see that as a cache and think the developer should take care of that depending on the project.

  • Like 3
Link to comment
Share on other sites

I'm planning to support ProCache and AIOM.

But not sure I want to mess at all with image variations. I also don't see that as a cache and think the developer should take care of that depending on the project.

Good news!  ^-^ (ProCache and AIOM)

In regard of the image variations, maybe you can provide a hook, so that others are able to add a functionality?

  • Like 3
Link to comment
Share on other sites

Hi Soma,

Just taking a first look at this as I think it could be quite useful for a particular purpose. I have a wireCache that caches a query that takes several minutes to run. I have it set to never expire - the content driving this query only gets changed once a year, but when it is being changed, it takes many edits to many different pages, so I don't want the cache to be cleared by any rules. I just want to clear it once after all the data has been changed.

I thought your module might be a nice way to do this, rather than manually deleting the row from the caches table, but you have this:

As found in the wire cache DB table except those that never expire.

Is there any reason you are not listing those caches that never expire? I assume it is to protect the content? Could this be optional?

I may end up going with a different approach because I think this module is too complex for client use anyway - of course awesome for devs which I assume is your target anyway. Still I thought I would ask because it still might be safer for me to be the one that clears that cache when it is time and your module would be a simple way to do this.

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...