Forum Replies Created

Viewing 15 replies - 1 through 15 (of 18 total)
  • Thread Starter featuremonkey

    (@featuremonkey)

    https://www.ads-software.com/support/topic/how-to-delete-all-product-attributes/

    xue28

    I don’t want to delete all product attributes.

    I want to delete all local product attributes with a specified name.

    Thread Starter featuremonkey

    (@featuremonkey)

    Thanks for the detailed response.

    Why would the image already be resized and compressed?

    pedro

    The image would be resized and compressed on the origin server so when ShortPixel returns 307 on first load, the image isn’t large for that user. You stated that using the “lossless compression” with ShortPixel ensures that compressed images are detected, so no compression-on-compression issues occur.

    And this is pretty much what we have done with another plugin of ours, called FastPixel,

    pedro

    Can I use “automatic cache warm-up” for solely images with FastPixel?

    Does it store the warmed-up (“optimized”) images on the CDN before image is accessed by a visitor?

    I encourage you to test it and let us know if it meets your expectations.

    pedro

    I ran the test on a website and using ShortPixel CDN with its configuration has a higher score ( 584 ms speed) than the FastPixel test website ( 1.0 second ) due to TTFB (683 ms on FastPixel vs. 38 ms on original) . However, cached page size of FastPixel is only 51.1KB on load, while the original website is 468KB on load.

    Thread Starter featuremonkey

    (@featuremonkey)

    Here is an analysis of the above statement involving srcset.

    not all srcsets are defined correctly [1] and not all srcsets are close to all device sizes [2]

    takis

    Given that each approach uses breakpoints, there is no difference in the closeness of srcset vs. adaptive images with respect to the device size.

    Configure the?$resolutions?variable at the top of the?adaptive-images.php?file to match the breakpoints you are using for your designs.

    Set breakpoints to match your CSS’s Media Queries $resolutions = array(1382, 992, 768, 480);

    https://adaptive-images.com/details.htm#:~:text=working%20with%20WordPress-,Installation,-For%20Apache%3A

    Therefore, the difference between srcset and adaptive images is that srcset requires images to exist on the server before they are requested without JS, while adaptive images generates images “on-the-fly” using JS.

    Boht srcset and adaptive images do not address when the browser window is resized without further configuration.

    Adaptive Images does NOT work on your browser window size, resizing your browser will have no effect on the size of images that are downloaded. It works on the screen size.

    https://adaptive-images.com/details.htm#:~:text=won%E2%80%99t%20be%20sent.-,Common%20Questions,-There%20are%20a

    srcset can account for this behavior when it is defined to correctly use the viewport width vs. screen size with a <picture> tag.

    adaptive images technique requires execution of JavaScript to detect when the user has resized image beyond a given breakpoint.

    Thread Starter featuremonkey

    (@featuremonkey)

    Here is more context to the above response.

    The use of “a cookie set by JS” indicates that — without further specification from the plugin developer — this plugin is using the implementation of Adaptive Images listed here: https://adaptive-images.com/details.htm

    1. The HTML starts to load in the browser and a snippet of JS in the <head> writes a session cookie, storing the visitor’s screen size in pixels.
    2. The browser then encounters an <img> tag and sends a request to the server for that image. It also sends the cookie, because that’s how browsers work.
    3. Apache receives the request for the image and immediately has a look in the website’s .htaccess file, to see if there are any special instructions for serving files.
    4. There are! The .htaccess says “Dear server, any request you get for a JPG, GIF, or PNG file please send to the adaptive-images.php file instead.”

    The PHP file then does some intelligent thinking which can cover a number of scenario’s but I’ll illustrate one path that can happen:

    1. The PHP file looks for a cookie and finds that the user has a maximum screen size of 480px.
    2. It compares the cookie value with all?$resolution?sizes that were configured, and decides which matches best. In this case, an image maxing out at 480px wide.
    3. It then has a look inside the?/ai-cache/480/?folder to see if a rescaled image already exists.
    4. We’ll pretend it doesn’t – the PHP then goes to the actual requested URI to find the original file.
    5. It checks the image width. If that’s smaller than the user’s screen width it sends the image.
    6. If it’s larger, the PHP creates a down-scaled copy and saves that into the?/ai-cache/480/?folder ready for the next time it’s needed, and sends it to the user.
    https://adaptive-images.com/details.htm

    So, the failure state with this plugin and external CDN’s is present when the following detail isn’t implemented.

    It [the origin server] sends images with a cache header that tells proxies [CDN’s] not to cache the image whilst telling browsers they should. This avoids problems with proxy servers and network caching systems grabbing the wrong image and storing it.

    https://adaptive-images.com/details.htm#:~:text=the%20approach.-,How%20it%20works,-Adaptive%20Images%20does

    Unfortunately, this behavior defeats the point of using adaptive images on the origin server, since a CDN that receives no-cache header for images will always pass image requests to the origin server (which increases latency of the system).

    The above scenario results in a website that is likely to be slower than a website that just serves a single image file — however large — from a CDN directly; due to the increase in latency (from the delivery of the image from the origin server).

    Thread Starter featuremonkey

    (@featuremonkey)

    not exactly sure what is your question , do you want to cache my-account/cart/checkout page or something ?

    qtwrk

    No, but will LSCache prevent the caching of any page with the AJAX Cart on it?

    Thread Starter featuremonkey

    (@featuremonkey)

    The initial statement of this forum post is incorrect without a significant amount of resources. However, it would be interesting to let people create cache varies based on cookie conditions.

    Thread Starter featuremonkey

    (@featuremonkey)

    Yes, I have the AJAX Cart.

    How do I ensure that LightSpeed Cache still caches pages with the WooCommerce Cart cookie since caching those pages (with the WooCommerce Cart cookie) is disabled by LSCache by default?

    Thread Starter featuremonkey

    (@featuremonkey)

    If so, how do you configure QC to — instead of filling the template — just store 3 page objects (one for each role), and serve those pages accordingly without hitting origin server?

    featuremonkey

    I am not exactly sure if I understand the question

    qtwrk

    Suppose that you have 3 + 1 roles:

    • Admin
    • Member A
    • Member B
    • (guest)

    There is a page (with path /a-post ) with content that can be seen by both Admin and Member A, but not Member B or guest users.

    When ESI is enabled, QC is still required to store lots of cache block objects for the page template (“public cache”; one for each role) and each user login (“private cache”; one for each logged-in user), then piece them together into a final page that is delivered to browser. However, this overhead is unnecessary in this scenario.

    Instead, QC could theoretically generate 2 – 4 pages without ESI enabled for less overhead:

    • Page (of path /a-post) output for Admin Role, Member A
    • Page (of path /a-post) output of Member B, guest

    *2 pages since the content has 2 variations; one for administrators and A members, one for B members or guests.

    This theoretical setup only requires QC to store 2 pages (of path /a-post), instead of the discussed configurations where

    • ESI Disabled, Cache Vary Disabled: 1 “public” page for guests, with thousands of “private” DUPLICATED pages (one for each user).
    • ESI Disabled, Cache Vary Enabled: 4 useless “public” pages are created for each role, with thousands of “private” DUPLICATED pages (one for each user).
    • ESI Enabled, Cache Vary Enabled: 4 “public” pages are created for each role, with thousands of “private” DUPLICATED esi blocks for each user, which are then formatted into a final page upon request.

    So instead of storing thousands of duplicated cache objects with those configurations, “how do you configure QC to only store the 2 – 4 final cache page objects (one for each role = 4; or one for users with the right cookie and one for users without the right cookie = 2)” for the same path (example /a-post), and serve the correct page object accordingly without hitting origin server?

    Thread Starter featuremonkey

    (@featuremonkey)

    the login status is stored in cookie , so QC will check the cookie value as authentication , if this private cache is stored on QC already , then no hit on origin , if it was not , or expired , then hit origin.

    qtwrk

    This information contradicts what you said 2 months ago in this forum post.

    How to perform authentication from the CDN level (without involving host server)?

    featuremonkey

    well, this is NOT possible , CDN is only a reverse proxy server + caching , it does NOT carry any PHP script of your site.

    qtwrk

    Moving forward, you have stated that the user must enable ESI to configure QC to store 3 pages (one for each role) in addition to the public cache page. However, the behavior you have provided does not match the behavior I am requesting.

    if you enable ESI , the page for login user , on same group , will have one “login-user’s public cache” , and utilize ESI block to fill in the rest

    qtwrk

    So with ESI enabled, there will be two objects on QC (after the origin is visited): Public and Private Cache. When a logged-in user visits the website, QC takes the cookie to verify that user’s status, then takes the template private cache and fills it with an ESI block.

    And that ESI block (e.g., headline for a logged-in role) is also stored on QC, so then QC doesn’t hit origin server to “fill” the page.

    Is that correct?

    If so, how do you configure QC to — instead of filling the template — just store 3 page objects (one for each role), and serve those pages accordingly without hitting origin server?

    this pub cache , presumably will be stored on QC , but for ESI blocks , it will be same case as aforementioned private cache situation.

    qtwrtk

    The public cache you refer to is the “Private Cache” of all logged-in users with ESI enabled. So, does this statement mean that

    1. ESI blocks will be cached per user (i.e 1000 esi cache block objects) on origin and QC?
    2. ESI Blocks will be cached per role (i.e 3 esi cache blocks objects) on origin and QC?
    Thread Starter featuremonkey

    (@featuremonkey)

    the cache is always generated from origin , and then it will be stored at QC and origin

    So QC will perform authentication for logged-in user on private cache page to serve private cache page without hitting origin?

    How do you configure QC to store 3 pages (one for each role) in addition to the public cache page?

    You must enable ESI?

    If I enable ESI, then it only stores a section of the page and always hits origin server for rest? Or does it store everything on QC, then create the template in QC?

    Thread Starter featuremonkey

    (@featuremonkey)

    Is the private cache served from the origin or QUIC.cloud CDN?

    when its login users , no matter what group this user belongs to , it has its own private cache.

    LightSpeed Cache states “When a page is privately-cached, there is a separate personalized copy stored for each user that requests it.”

    Suppose that ESI is disabled and a cache vary is configured for three roles with 1000 users.

    • Does this configuration store 1000 pages (one for each user) or does it store 3 pages (one for each role) in addition to the public cache page.
    Thread Starter featuremonkey

    (@featuremonkey)

    If this feature will not be implemented by the plugin, please define where the file and function that controls this behavior is located for a custom code implementation.

    Thread Starter featuremonkey

    (@featuremonkey)

    How to suggest this feature?

    Thread Starter featuremonkey

    (@featuremonkey)

    .

    Thread Starter featuremonkey

    (@featuremonkey)

    I change CSS class .ac-divider display property from inline-block to block in assets/css/table.css of Plugin File Editor: Admin Columns.

Viewing 15 replies - 1 through 15 (of 18 total)