静态网站生成器如Jekyll如何处理浏览器缓存

时间:2015-08-05 15:36:16

标签: caching browser jekyll static-site

我对Jekyll如何工作的理解是,一旦我在本地写博客,Jekyll将生成一个页面并将其添加到某种索引系统,这样当用户加载主页面时,他们可以看到所有列表这些帖子。是对的吗?但是,它如何处理浏览器缓存。一旦我添加了新帖子,我们如何阻止浏览器使用缓存索引并使其每次都获取新索引。 或者我说的完全是胡说八道?

1 个答案:

答案 0 :(得分:5)

没有"索引系统"参与杰基尔。它生成页面和相关资源(CSS,JS,图像等),这些都是。

缓存在很大程度上取决于您的HTTP服务器配置。服务器使用任何资源发送的HTTP标头可以告诉浏览器将其保留在缓存中一段时间​​,或者根本不存在。

我在Apache HTTP服务器中有这些设置,例如:

<IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 year" # Pages ExpiresByType text/html "access plus 15 minutes" # RSS feed ExpiresByType text/xml "access plus 120 minutes" </IfModule>

这告诉浏览器默认情况下将缓存中的资源保留1年,但HTML页面仅保留15分钟,RSS源保留2小时。因此,除非浏览器缓存需要释放一些空间,否则图像,CSS和JS将被缓存一年。

延迟取决于您的写作频率。我目前正在迁移大量旧内容,因此延迟了15分钟,但我通常每周发布一次,所以我会在迁移结束后将其设置为1或2天。

您必须了解Expire HTTP标头告诉浏览器将文件保留在缓存中的时间。使用这样的配置,浏览器现在无法获得一些新内容。还有其他方法可以处理缓存(例如ETag),它允许浏览器询问服务器是否有新内容,但它对Web性能的效率较低。

因此,如果您将HTML页面缓存Expire设置为1天,并且用户在更新之前获取该页面,那么她将在大约1天后获得新页面。

这根本不会让我感到烦恼,但你可能会这样想。

HTH