Caching 像Jekyll这样的静态站点生成器如何处理浏览器缓存

Caching 像Jekyll这样的静态站点生成器如何处理浏览器缓存,caching,browser,jekyll,static-site,Caching,Browser,Jekyll,Static Site,我对Jekyll工作原理的理解是,一旦我在本地写了一篇博客,Jekyll就会生成一个页面并将其添加到某种索引系统中,这样当用户加载主页时,他们就可以看到所有帖子的列表。是这样吗?但是,它如何处理浏览器缓存。一旦我添加了一篇新文章,我们如何防止浏览器使用缓存的索引,并让它每次都获取新索引。 还是我说的完全是胡说八道?杰基尔没有“索引系统”。它生成页面和相关资源(CSS、JS、图像等),仅此而已 缓存在很大程度上取决于您的HTTP服务器配置。服务器通过任何ressource发送的HTTP头可以告诉浏

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

杰基尔没有“索引系统”。它生成页面和相关资源(CSS、JS、图像等),仅此而已

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

我在Apache HTTP服务器中有以下设置,例如:


过期于
ExpiresDefault“访问权限加1年”
#页数
ExpiresByType text/html“访问加15分钟”
#RSS源
ExpiresByType text/xml“访问加120分钟”

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

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

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

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

这一点也不困扰我,但你可能会有不同的想法


HTH

哇,谢谢你的详细回答。我使用的是GitHub页面,它只服务于静态站点,我认为没有任何方法可以编辑expire设置。我应该如何让浏览器获取新内容。Github Pages似乎设置了
CacheControl:max age=600
,因此浏览器在10分钟后询问服务器是否有新版本的页面。你真的需要更短的缓存吗?不,10分钟就可以了,谢谢你告诉我。谢谢你的解释