I have implemented resourec expiry with the following set up
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
with a2dismod expires, as expected I have no Expires header:
wget --server-response --no-check-certificate https://sandbox.trinityp3.com/wp-includes/js/jquery/jquery.js?ver=1.12.4
--2018-10-17 07:57:09-- https://sandbox.trinityp3.com/wp-includes/js/jquery/jquery.js?ver=1.12.4
Resolving sandbox.trinityp3.com (sandbox.trinityp3.com)... 52.77.97.226
Connecting to sandbox.trinityp3.com (sandbox.trinityp3.com)|52.77.97.226|:443... connected.
WARNING: cannot verify sandbox.trinityp3.com's certificate, issued by ‘[email protected],CN=sandbox.trinityp3.com,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU’:
Self-signed certificate encountered.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Tue, 16 Oct 2018 18:57:10 GMT
Server: Apache/2.4.10 (Ubuntu)
Last-Modified: Tue, 06 Sep 2016 02:32:13 GMT
Accept-Ranges: bytes
Content-Length: 97184
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Referrer-Policy:
Cache-Control: max-age=604800, public
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/x-javascript
with a2enmod expires however I do get a 1 year expires response
wget --server-response --no-check-certificate https://sandbox.trinityp3.com/wp-includes/js/jquery/jquery.js?ver=1.12.4
--2018-10-17 08:01:26-- https://sandbox.trinityp3.com/wp-includes/js/jquery/jquery.js?ver=1.12.4
Resolving sandbox.trinityp3.com (sandbox.trinityp3.com)... 52.77.97.226
Connecting to sandbox.trinityp3.com (sandbox.trinityp3.com)|52.77.97.226|:443... connected.
WARNING: cannot verify sandbox.trinityp3.com's certificate, issued by ‘[email protected],CN=sandbox.trinityp3.com,O=Internet Widgits Pty Ltd,ST=Some-State,C=AU’:
Self-signed certificate encountered.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Tue, 16 Oct 2018 19:01:27 GMT
Server: Apache/2.4.10 (Ubuntu)
Last-Modified: Tue, 06 Sep 2016 02:32:13 GMT
Accept-Ranges: bytes
Content-Length: 97184
Vary: Accept-Encoding
Cache-Control: max-age=604800, public
Expires: Wed, 16 Oct 2019 19:01:27 GMT
Access-Control-Allow-Origin: *
Referrer-Policy:
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/x-javascript
I have also run grep to find any other expires statements, but there are none.
After adding ExpiresByType application/x-javascript the problem still persists. Could there be a conflict with deflate?
ubuntu@sandbox:/etc/apache2$ grep -r application/x-javascript *
mods-available/deflate.conf: AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
sites-available/710-tp3-au-www-sandbox.conf: ExpiresByType application/x-javascript "access plus 1 month"
sites-available/710-tp3-au-www-sandbox.conf: ExpiresByType application/x-javascript "access plus 1 month"
You have no
ExpiresByType
rule for theapplication/x-javascript
Content-Type
your.js
file is being served as.