我正在使用Amazon Web Services和Tomcat来部署Java应用程序。
该应用程序包含艺术家数据的Lucene索引和允许用户搜索音乐艺术家(例如麦当娜,披头士乐队)的网站,然后它将以html的形式返回从索引生成的该艺术家的信息页。索引不会改变,因此为特定艺术家生成的页面永远不会改变。我不想预先计算页面,因为这需要很长时间(超过一百万页)并且需要很多空间,但我确实想要缓存页面以便:
我如何解决这个问题(我有丰富的Java经验,但网站经验不多)
当我说索引永远不会改变时,我的意思是部署的应用程序使用相同的索引,并且永远不会修改该索引。大约每月一次创建一个新索引,并使用新索引重新部署应用程序。
答案 0 :(得分:1)
在页面上设置一些缓存标题,以便将页面存储更长的时间(例如几天),将tomcat移动到其他主机名,然后设置amazon cloudfront以将tomcat作为源服务器。< / p>
然后最终设置一个CNAME DNS记录,将www.yourdomain.com指向云端
更新索引时,只需告诉cloudfront使其整个缓存无效。
这是我能想到的最懒惰的方式。 (但如果有更懒惰的方法,我愿意接受建议。)
答案 1 :(得分:0)
您可以使用Servlet中的以下代码为缓存创建目录,然后将新生成的页面存储在那里。
cache = Paths.get(request.getSession().getServletContext().getAttribute("javax.servlet.context.tempdir") + "/artists");
try {
if(!Files.exists(cache)) {
Files.createDirectory(cache);
}
} catch(IOException e) {