Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5.x]: Asset Transforms Are Not Removed When An Asset is Replaced #15753

Open
phillmorgan28 opened this issue Sep 18, 2024 · 4 comments
Open

Comments

@phillmorgan28
Copy link

phillmorgan28 commented Sep 18, 2024

What happened?

Description

We replaced an image asset using the asset manager but all entries that use the asset are still displaying the old image. This is because Craft is not deleting old images transforms. I've tried all cache clearing mechanisms and Craft will not delete old image transforms. Only manual deletion is successful.

Steps to reproduce

  1. Add an image asset to a matrix
  2. Create an entry using the matrix
  3. Use twig function tag to create an image tag and pass a transform via twig as well
  4. Upload an image
  5. Replace the previous image with a new image through the asset manager

Expected behavior

Craft should be deleting old images transforms when an asset is replaced, or when template caches are cleared

Actual behavior

The old image persists

Craft CMS version

5.3.6

PHP version

8.2

Operating system and version

No response

Database type and version

No response

Image driver and version

No response

Installed plugins and versions

@phillmorgan28 phillmorgan28 changed the title [5.x]: Replacing an asset does not update any entries where the asset is used [5.x]: Asset Transforms Are Not Removed When An Asset is Replaced Sep 18, 2024
@i-just
Copy link
Contributor

i-just commented Sep 19, 2024

Hi, thanks for getting in touch! Let me check if I understand this correctly,

  • you have an entry with a matrix field with an assets field;
  • you upload an image to that assets field;
  • you view the entry on the front end and see the image you uploaded, transformed as per the transform you used
  • you the go to control panel > Assets and replace the file for that asset with a new one
  • you view the entry on the front end, and you see the old file, not the new one

Is that correct?

Could you please share a snippet of your twig code?
Are you using a named transform (defined in the control panel), or are you defining one in your template?

@phillmorgan28
Copy link
Author

phillmorgan28 commented Sep 20, 2024

Hi, thanks for the response. This is our image twig component:

{% if image is defined and image|length %}

  {% if imageAltTag is defined and imageAltTag|length %}
    {% set altTag = imageAltTag %}
  {% else %}
    {% set altTag = '#REDACTED#' %}
  {% endif %}

  <div{% if extraClasses is defined %} class="{{ extraClasses }}"{% endif %}>
    {{ tag('img', {
      class: imageClasses,
      srcset: image.one.setTransform({width: width, height: height, format: 'webp', quality: 80, mode: mode}).getSrcset(['1.5x']),
      src: image.one.setTransform({ width: width, height: height, format: 'webp', quality: 80, mode: mode}),
      width: width,
      height: height,
      alt: altTag,
    }) }}
  </div>
{% endif %}

The problem isn't with the generation of the images, it's that the transforms are not being cleaned up when the image is replaced, or when any of the caches are cleared.

Many thanks!

@phillmorgan28
Copy link
Author

Additionally, we are using some cache tags throughout our templates, however considering that I am clearing the caches to solve the issue (with no effect), I wouldn't have though these would have any bearing on transforms not being cleaned up?

@i-just
Copy link
Contributor

i-just commented Sep 24, 2024

Thanks! What filesystem are you using for your transforms (aws s3, local, etc)? Are you using CDN to serve the transformed images?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants