===================================================================
# #
# #
# #
# N O T E S & T O D O S #
# #
# ===================================== #
# #
# Nevma (info@nevma.gr) #
# #
# #
# #
===================================================================
********************************************************************************
ADAPTIVE IMAGES CRUNCH PLUGIN
=============================
- NOT A SERVICE
- NO API KEY
- FREE AIF
- LOSSY JPG
- LOSSLESS PNG
- PNG2JPG
Kraken,
EWWW,
Smushit,
TinyJPG,
TinyPNG,
ShortPixel,
Prizm, => require API key
EWWW, => requires API key for JPEGs
Imsanity, => has no support for true batch compression
CW => has no support for lossy JPEG compression
Settings
- max width
- max height
- jpeg quality
- lossy/lossless jpeg
- png compression level
- image types to include
- date before which to delete images
*** BE SUPER CAREFUL WITH PNGs, ALPHA TRANSPARENCY, ETC
*** PROCESS IS IRREVERSIBLE - IMAGES CANNOT BE REINSTATED
Functions
- Run recursively on a directory
- Run on WordPress attachments
- Batch crunch on demand
- Partial batch crunch on demand
- WP-Cron batch crunch
- On image upload crunch
- Record which images have been crunched in the past
- Warn that the process is irreversible
Why
- Reduce overall website storage
- Quicker backups
- Precious SSD storage
- Reduce page download times
********************************************************************************
NEXT
====
- TINYPNG AS A SERVICE FOR PNGs
https://tinypng.com/developers
- WP Multisite
- CDN/VARNISH SUPPORT
*** What about images in CSS?
- IMMEDIATELY CHECK IF PLUGIN ACTUALLY WORKS
AND REPORT THE POSSIBLE PROBLEMS, IF ANY
Pedro.Frota:
Long story short: since Adaptive Images works in such a transparent manner, one big question for users is
whether or not it is indeed working. IMHO a visual feedback is the best solution.
- PERFORMANCE SERVICES CHECK
- GOOGLE PAGESPEED
- YAHOO YSLOW
- TOOLS.PINGDOM
- AND DOCUMENT IT ACCORDINGLY
- PLUGINS FOLDER RENAME
Forum thread: https://wordpress.org/support/topic/hardening-wordpress-breaks-this-plugin/
define(‘WP_PLUGIN_DIR’, ‘/home/username/public_html/wp-content/newpluginname’);
define(‘WP_PLUGIN_URL’, ‘http://www.website.com/wp-content/newpluginname’);
- DOCUMENTATION
- tools which do not emulate a mobile screen cannot test the plugin results (Google pagespeed, YSlow, GTmetrix,
Pingdom)
- one can use Firebug to debug by editing cookies from the cookies tab
- make a video of the above
- an extra way to test is by adding the ?resolution= parameter to an image url
- Getting started section.
- Better "How to test" that the plugin actually works.
- What-could-go-wrong section for usual problems.
- FAQ.
- A website!
- NEW SETTINGS
- Image types to handle
- PNG colour depth to keep
- Transform PNGs to PNG8 or not
- Exceptions for certain images
- Allow debug or not
- MODAL CONFIRMATIONS IN PLUGIN SETTINGS BUTTONS
- SINCE RECURSIVELY TRAVERSING LARGE DIRECTORY STRUCTURES IS QUITE SNAPPY ONE COULD ADD
- Daily cache calculation
- Report it to email
- Report as an admin message
- Report in a dashboard widget
- MY JPEG COVERSIONS ARE ALMOST AS GOOD AS THE TINYJPG ONES
FOR INSTANCE 175KB ~ 162KB
- Test how much is the storage overhead of the cache for a big site!
- TESTS
- Test with NextGEN.
- WP content outside of installation
- W3 Total Cache compatibility
- WP Super Cache compatibility
- VARIOUS
- Testing: set up functions in a way that the image generation can be tested.
- Functions prefix "ai_".
- WordPress 3.0 and down allow the "+"" character in filenames.
- In "?debug=true" mode, after the "image requested" part, show "image to be send" info
- Use PHP::exec for cache purge and cache size calculation
- Does this plugin work for you? Then say so! Mail, tweet, like, etc.
- Resize (crunch) even the original images!
- Upscale images (smoothly)?
- This plugin has server XXX images successfully
- This plugin happily serves XXX images from its cache
- This plugin happily serves XXmb from its cache
- Rewrite rule should contain the NC flag (case insensitive).
RewriteRule \.(?:jpe?g|gif|png)$ /adaptive-images/adaptive-images-script.php [NC,L]
Responsive image art direction
==============================
Default anchors and zoom levels
1. zoom level 1, 2, 3...
2. anchor in image
----------------
| tl tc tr |
| |
| ml mc mr |
| |
| bl bc br |
----------------
3. different aspect ratio/dimensions
- by breakpoint
- by orientation
https://usecases.responsiveimages.org/#art-direction/
http://davidwalsh.name/responsive-images/
https://developers.google.com/web/fundamentals/media/images/images-in-markup/
https://css-tricks.com/which-responsive-images-solution-should-you-use/
http://www.smashingmagazine.com/2013/07/08/choosing-a-responsive-image-solution/
Compatibility
=============
- NginX
location assets {
}
location ai-cache { ==> *** THE CACHE DIR ***
}
location / {
rewrite \.(?:jpe?g|gif|png)$ /adaptive-images.php; ==> *** THE PHP SCRIPT ***
}
also as it happened here https://wordpress.org/support/topic/plugin-not-working-nginx/ this also worked:
location ~ /wp-content/(themes|uploads) {
rewrite \.(?:jpe?g|gif|png)$ /wp-content/plugins/adaptive-images/adaptive-images-script.php;
}
WP Engine
https://help.wpengine.com/hc/en-us/requests/1125237
location ~ \.(jpe?g|gif|png) {
proxy_pass http://localhost:6789;
}
Also made a note of this in the forum: https://wordpress.org/support/topic/wp-engine-setup-instructions-for-adaptive-images/
- Varnish
Pressidium for configuration
Or
The ingenious idea to use url parameters on the image sources via Javascript, as proposed by a guy in the forum.
Unit tests for image generation
===============================
- PNG
- PNG8
- PNG256
- PNG with alpha
- PNG with trasparency
- GIF
- GIF with trasparency
- JPEG
(Compare with services like TinyPNG, etc.)
Also check
==========
- https://wordpress.org/plugins/ricg-responsive-images/
- https://wordpress.org/plugins/responsify-wp/
- WURFL.IO service (and my plugin)
- https://usecases.responsiveimages.org/#art-direction/
- http://davidwalsh.name/responsive-images/
- https://developers.google.com/web/fundamentals/media/images/images-in-markup/
- https://css-tricks.com/which-responsive-images-solution-should-you-use/
- http://www.smashingmagazine.com/2013/07/08/choosing-a-responsive-image-solution/
Future ideas
============
- Put the stylings in separate CSS files.
- Ask users to rate plugin after x-images have been cached.
- Ajax calculate image cache size.
- Ajax cleanup image cache size.
- Report all folders and files in cache.
- Per image cache purge.
- Purge image cache beyond a size.
- Per breakpoint cache purge.
- Notify about cache size in WP cron, in WP admin, perhaps an email to the admin.
- What if a user actually wants to see the full version of an image, even in a mobile network?
- When an image is deleted in the media gallery then its resized versions should be deleted, too.
- When breakpoints are changed delete the cache directories of the unused breakpoints to clean up.
- Original adaptive images PHP script error log is output inside the plugin files.
- Send original images to search engine bots to preserve their metadata.
Plugin needs 3 settings in order to function properly
=====================================================
1. database options set
2. htacess file bit inserted
3. user settings php file created
Test cases to check with each version
=====================================
- Clean install
- Deactivate then activate
- Version 0.2.08 upgrade
- Older version upgrade
- Print debug info
- Images correctly sent at each breakpoint
- Uninstall cleanup
- Images to test
- JPG
- GIF
- GIF with transparency
- PNG
- PNG with transparency