=== Resource Versioning === Contributors: szepe.viktor Donate link: https://szepe.net/wp-donate/ Tags: file, resource, apache, nginx, varnish, cache, CSS, JS, JavaScript, CDN, content delivery network, optimization, performance Requires at least: 4.0 Tested up to: 4.9.7 Stable tag: 0.3.0 License: GPLv2 Turn Query String Parameters into file revision numbers. == Description == "It’s important to make resources (images, scripts, stylesheets, etc.) cacheable." [Steve Souders](http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/) It is much easier to use a CDN without Query String Parameters. This plugins alters only local resources' URL-s. The `ver` Query String Parameter will be inserted into the filename. For example `jquery.min.js?ver=1.10` becomes `jquery.min.110.js`. To reverse this in the web server add this line to your nginx config: ` server { location ~ ^(.+)\.\d\d+\.(js|css|png|jpg|jpeg|gif|ico)$ { #try_files $uri $1.$2 /index.php?$args; try_files $uri $1.$2 =404; } } ` Or to your Apache configuration or `.htaccess` file. ` RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)\.\d\d+\.(js|css|png|jpg|jpeg|gif|ico)$ $1.$2 [NC,L] ` = Testing the plugin before live usage = You can test the plugin by replacing the two `add_filter()` calls with this ` require_once( dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) . '/wp-load.php' ); wp(); echo o1_revving_src( $argv[1] ) . PHP_EOL; ` Then start it from CLI: `php revving.php ` = Links = Development of this plugin goes on on [GitHub](https://github.com/szepeviktor/resource-versioning). == Installation == This section describes how to install the plugin and get it working. 1. Upload `revving.php` to the `/wp-content/plugins/` directory 1. Activate the plugin through the 'Plugins' menu in WordPress == Frequently Asked Questions == = How to remove all Query String Parameters from resources? = Poorly written plugins and themes may add unwanted Query String Parameters. For example `?rev=4.10`. To drop all these parameters copy this into your `wp-config.php`: ` define( 'O1_REMOVE_ALL_QARGS', true ); ` == Changelog == = 0.3.0 = * Support cdn-ified URL-s without protocol schema. * More structured code. = 0.2.0 = * Strengthen stability. * Support cdn-ified URL-s. = 0.1.3 = * FIX: Use proper WordPress function for content URL. = 0.1.2 = * FIX: Don't run on admin. = 0.1.1 = * FIX: External URL detection. = 0.1.0 = * Initial relase without multisite support.