我对 Jekyll 工作原理的理解是,一旦我在本地写博客,Jekyll 会生成一个页面并将其添加到某种索引系统中,这样当用户加载主页时,他们可以看到所有帖子的列表。那正确吗?但是,它如何处理浏览器缓存。添加新帖子后,我们如何防止浏览器使用缓存索引并使其每次都获取新索引。还是我说的完全是废话?
1 回答
Jekyll 中不涉及“索引系统”。它生成页面和相关资源(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 天后获取新页面。
这一点都不困扰我,但你可能会不这么认为。
高温高压