dev-master
9999999-devRev CraftCMS asset urls with date modified timestamps
The Requires
by Leevi Graham
Rev CraftCMS asset urls with date modified timestamps
This Twig function revs asset urls with the date modified timestamp, (*1)
To install NSM Revved URL, follow these steps:, (*2)
nsmrevvedurl
directory into your craft/plugins
directorygit clone https://github.com/Newism/nsmrevvedurl.git
directly into your craft/plugins
folder. You can then update it with git pull
composer require nsm/craftcms-revved-url
nsmrevvedurl
for Craft to see it. GitHub recently started appending -master
(the branch name) to the name of the folder for zip file downloads.NSM Revved URL works on Craft 2.4.x and Craft 2.5.x., (*3)
Its simple… just call the function and pass the asset and an optional transform, (*4)
nsm_rev_asset_url(asset, transform)
Before revving:, (*5)
http://example.com/uploads/images/_572x430_crop_center-center_80/James-Ellis_elevation-render-1.jpg
After revving:, (*6)
http://example.com/uploads/images/_572x430_crop_center-center_80/James-Ellis_elevation-render-1.1485302752.jpg
NSM Revved URL supports Imager transforms and craft.imager.srcset()
by wrapping the Imager plugin functions., (*7)
{{ nsm_rev_imager_url(newsImage, transform) }}
Caution this replaces the original url
property, (*8)
{% set revvedImagerAsset = nsm_rev_imager_asset(newsImage, transform) }} {# output the revved URL #} {{ revvedImagerAsset.url }}
craft.imager.srcset()
{% set revvedImagerAsset = nsm_rev_imager_asset(newsImage, [transform1, transform2]) }} {{ craft.imager.srcset(revvedImagerAsset) }}
This plugin doesn't actually change the the filename on the server. You'll need to implement rewrite rules on your server., (*9)
See: https://github.com/h5bp/server-configs-apache/blob/master/dist/.htaccess#L968-L984, (*10)
# ---------------------------------------------------------------------- # | Filename-based cache busting | # ---------------------------------------------------------------------- # If you're not using a build process to manage your filename version # revving, you might want to consider enabling the following directives # to route all requests such as `/style.12345.css` to `/style.css`. # # To understand why this is important and even a better solution than # using something like `*.css?v231`, please see: # http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/ # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{REQUEST_FILENAME} !-f # RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp|webmanifest)$ $1.$3 [L] # </IfModule>
See: https://github.com/h5bp/server-configs-nginx/blob/master/h5bp/location/cache-busting.conf#L1-L10, (*11)
# Built-in filename-based cache busting # This will route all requests for /css/style.20120716.css to /css/style.css # Read also this: github.com/h5bp/html5-boilerplate/wiki/cachebusting # This is not included by default, because it'd be better if you use the build # script to manage the file names. location ~* (.+)\.(?:\d+)\.(js|css|png|jpg|jpeg|gif)$ { try_files $uri $1.$2; }
Brought to you by Leevi Graham, (*13)
Rev CraftCMS asset urls with date modified timestamps