From 567d0206f5241c2bc1990ff40d283f8db10535d7 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Mon, 15 Aug 2016 16:01:37 +0000 Subject: [PATCH] Bug 12904 - Force browser to load new javascript files after upgrade A common issue with Koha seems to be that the web browsers continue to use cached js files after an upgrade. If we append the version as a parameter, we can force the browser to update the javascript files. 1) Apply this patch on a new branch based on master. 2) In a separate branch check out a previous version of Koha and go through the installation process on an empty database. 3) After logging into Koha, turn on Firebug's Net panel (or Chrome's Network panel) and turn on the filter for JavaScript files. 4) Clear the browser cache and navigate to a page, for instance Circulation. In Firebug the Net panel should show a status of "200 OK" for all files, indicating that the file was downloaded, not loaded from the cache. In Chrome the "size" column will show a file size if the file was downloaded. 5) Navigate to another page and confirm that scripts are being loaded from the cache: Scripts like jquery.js and jquery-ui.js which are loaded on every page should have a status in the Firebug Net panel of "304 Not Modified." In Chrome the "size" columns should show "from cache." 6) Check out the branch you created for testing this patch. 7) In order to preserve the state of your browser cache for accurate testing, open a different browser from the one you were previously testing with, load Koha, and run through the database update. 8) Return to your original testing browser and navigate to another Koha page. Firebug's Net panel should show that script files are now being downloaded with a "koha_version" query string. These files should have a status of "200 OK" indicating that they are being downloaded, not loaded from the cache. 9) Navigate to another page and conifrm that the new versions of the scripts are being loaded from the cache. To confirm that all affected JavaScripts links are working correctly, test these pages by checking the Firebug Net panel for errors: - Administration -> Currencies and exchange rates (jquery.dataTables.colvis.js) - Tools -> Stage MARC records for import (ajaxfileupload.js) or another page which performs a file upload. - Catalog -> Detail page -> MARC Preview (greybox JS) - Help -> Any help page - Any page which loads DataTables (Circulation in the staff client, for instance, and a title's detail page in the OPAC) - Bonus points if you check the various conditional JS includes controlled by the many OPAC feature preferences Signed-off-by: Nick Clemens --- debian/templates/apache-shared-intranet.conf | 2 ++ debian/templates/apache-shared-opac.conf | 2 ++ debian/templates/apache-shared.conf | 4 ++-- etc/koha-httpd.conf | 5 ++++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/debian/templates/apache-shared-intranet.conf b/debian/templates/apache-shared-intranet.conf index 2117942..429a8ab 100644 --- a/debian/templates/apache-shared-intranet.conf +++ b/debian/templates/apache-shared-intranet.conf @@ -17,6 +17,8 @@ RewriteRule (.+) $1?%1%2 [N,R,NE] RewriteRule ^/bib/([^\/]*)/?$ /cgi-bin/koha/detail\.pl?bib=$1 [PT] RewriteRule ^/isbn/([^\/]*)/?$ /search?q=isbn:$1 [PT] RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT] +RewriteRule ^(.*)_(.*).js$ $1.js [R=301,N,L] +RewriteRule ^(.*)_(.*).css$ $1.css [R=301,N,L] Alias "/api" "/usr/share/koha/api" diff --git a/debian/templates/apache-shared-opac.conf b/debian/templates/apache-shared-opac.conf index 0e18bc2..ca2f7c3 100644 --- a/debian/templates/apache-shared-opac.conf +++ b/debian/templates/apache-shared-opac.conf @@ -17,6 +17,8 @@ RewriteRule (.+) $1?%1%2 [N,R,NE] RewriteRule ^/bib/([^\/]*)/?$ /cgi-bin/koha/opac-detail\.pl?bib=$1 [PT] RewriteRule ^/isbn/([^\/]*)/?$ /search?q=isbn:$1 [PT] RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT] +RewriteRule ^(.*)_(.*).js$ $1.js [R=301,N,L] +RewriteRule ^(.*)_(.*).css$ $1.css [R=301,N,L] = 2.4> AliasMatch "^/sitemap(.*)" "/var/lib/koha/${instance}/sitemap/sitemap$1" diff --git a/debian/templates/apache-shared.conf b/debian/templates/apache-shared.conf index b923578..f29c7ac 100644 --- a/debian/templates/apache-shared.conf +++ b/debian/templates/apache-shared.conf @@ -58,8 +58,8 @@ SetEnv PERL5LIB "/usr/share/koha/lib" ExpiresActive on - ExpiresByType text/css "access plus 12 hours" - ExpiresByType application/javascript "access plus 12 hours" + ExpiresByType text/css "access plus 60 days" + ExpiresByType application/javascript "access plus 60 days" ExpiresByType image/png "access plus 12 hours" ExpiresByType image/gif "access plus 12 hours" diff --git a/etc/koha-httpd.conf b/etc/koha-httpd.conf index 2747791..5c10710 100644 --- a/etc/koha-httpd.conf +++ b/etc/koha-httpd.conf @@ -110,6 +110,8 @@ RewriteRule ^/bib/([^\/]*)/?$ /cgi-bin/koha/opac-detail\.pl?bib=$1 [PT] RewriteRule ^/isbn/([^\/]*)/?$ /search?q=isbn:$1 [PT] RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT] + RewriteRule ^(.*)_(.*).js$ $1.js [R=301,N,L] + RewriteRule ^(.*)_(.*).css$ $1.css [R=301,N,L] # REST API configuration Alias "/api" "__API_CGI_DIR__" @@ -226,7 +228,8 @@ RewriteRule ^/bib/([^\/]*)/?$ /cgi-bin/koha/detail\.pl?bib=$1 [PT] RewriteRule ^/isbn/([^\/]*)/?$ /search?q=isbn:$1 [PT] RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT] - + RewriteRule ^(.*)_(.*).js$ $1.js [R=301,N,L] + RewriteRule ^(.*)_(.*).css$ $1.css [R=301,N,L] # REST API configuration Alias "/api" "__API_CGI_DIR__" -- 2.1.4