30

I have a Jekyll bootstrap based blog hosted on Github pages.

My problem is: Every time I change something on my web page, I have to forcefully reload the page (CTRL + R) to see the changes.

Jekyll or my browser does not seem to realize that there is a newer version available to send out.

How can I configure Jekyll to better handle this?

Oerd
  • 2,256
  • 1
  • 21
  • 35
Sebastian Hoitz
  • 9,343
  • 13
  • 61
  • 77

3 Answers3

6

There are a couple of jekyl plugins to handle assets cache busting.

https://github.com/ixti/jekyll-assets/

http://matthodan.com/2012/11/22/jekyll-asset-pipeline.html

I tried jekyll-assets and it's pretty nice as it manage all kind of assets with an md5 version number.

Before I use to append a string to my css links at compilation time.

<link href="{{ ASSET_PATH }}/css/global.css?{{ site.time | date:'%Y%m%d%U%H%N%S' }}" rel="stylesheet">
Yannick Schall
  • 32,601
  • 6
  • 29
  • 42
3

You can add these meta tags to your html to disable browser caching for your pages.

<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
Murat Çorlu
  • 8,207
  • 5
  • 53
  • 78
-1

If you want to bypass the cache on static resources you could change the name of the file each time you push it. This will make the browser get the new resource since it won't know anything about a file with a new name.

For example:

Old file name: project.css New file name: projectv01.css

Or whatever you would like.

edhedges
  • 2,722
  • 2
  • 28
  • 61
  • 1
    The referring page would have to be renamed as well which would break the user experience completely. Instead of index.html it would have to be index01.html :). Otherwise the cache will serve the index.html that points to project.css rather than projectv01.css. Using javascript to add ?cache=random to every content url is A solution.. but a horrible bad solution. – whardier Dec 09 '12 at 22:02