我正在编写一个Grails / GSP应用程序,该应用程序在不存在网络时需要脱机运行。我阅读了以下有关HTML5 Offline / AppCache的文章,这些文章非常有帮助:
总结一下(
tl;dr
),我需要在每个页面的manifest
元素中定义一个<html>
属性,如下所示:<html manifest="myapp-cache.manifest">
...
</html>
其中
myapp-cache.manifest
是“缓存 list ”文件的名称,该文件指定了脱机/缓存行为,可能看起来像这样:CACHE MANIFEST
NETWORK:
*
CACHE:
index.html
somethingCool.html
myimage.png
myapp.css
这里的问题是,使用Grails的我将没有要缓存的HTML文件。 实际上,我可能有一个
index.gsp
和somethingCool.gsp
,但是它们表示经过预处理的HTML,并且永远不会作为HTML文档存在。而且我无法在缓存 list 中指定GSP,因为GSP可以(并且不应)直接从客户端获取。当我们开始重用GSP时,事情变得更加复杂,例如
header.gsp
和footer.gsp
,标记库等。所以我问: Grails是否支持HTML5离线版? 如果可以,如何以及以什么身份(文档在哪里)?如果不是,是否有任何办法迫使Grails脱机兼容?还是Grails无法使用此HTML5功能?
更新资料
也许可以通过URL映射以某种方式实现?例如,也许有一种方法可以使Grails将请求从
http://myapp.example.com/fizzbuzz.html
映射到http://myapp.example.com/fizzbuzz
,然后可以提示Grails调用正确的 Controller 操作并呈现正确的GSP?
最佳答案
您的陈述“我将没有要缓存的HTML文件”是错误的。 Grails是一个服务器端框架,尽管您在服务器端使用GSP,标记库等,但所有客户端(浏览器)所看到的都是纯HTML。
因此,最好缓存.gsp,因为所有浏览器都可以获取,而缓存是Grails提供的HTML。不要因扩展名而感到困惑!脱机时,浏览器将以与.html相同的方式从AppCache中获取HTML。
AppCache是一种客户端技术,因此我怀疑一般是否有关于服务器端技术的特别文档,尤其是Grails,因为它对任何服务器端技术都起作用。
@sneeb Grails可以提供您希望的任何格式的内容,包括HTML,JSON,XML等。因此,Grails支持任何类型的内容,包括HTML5。
关于html - Grails如何支持HTML5离线模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26824184/