2014-11-05 25 views
0

我有一个角度为js的应用程序,其主容器页面“index.html”每个版本都更新一次。这是使用Go构建的应用程序引擎中托管的。服务器端提供html视图和静态内容的直接服务以及一个restful API。即使修改了html页面,应用程序引擎也返回304

,直到我推一个新版本的话,我必须努力重新加载页面,避免受到304

我的app.yaml文件这一切的伟大工程,现在是很基本的:

handlers: 
- url: /.* 
    script: _go_app 

我尚未设置任何缓存策略,因此我了解,应用引擎会默认缓存静态文件10分钟。

发生了什么事?

回答

0

我相信我找到了答案。

有两件事困扰了我这个:

首先,我知道我不能有效,因为我本来可以处理静态文件,这是一个工作,我还没有得到解决,以还,但静文件通过路由代码在主要脚本中传递,而不是在app中声明。使用后一种方法可以让应用引擎完成工作而不是脚本,并希望节省一些宝贵的处理器周期。

其次,我不完全确定index.html在路径是“/”时是如何提供的,它只是在工作。我知道各种网络服务器(Apache,IIS等)都有一个默认页面,而且应用引擎似乎也以相同的方式工作。

所以,当我决定每个请求并不需要任何动态脚本我只想用下面的代码为它服务:

http.ServeFile(w, r, r.URL.Path[1:]) 

这神奇变身“/”到“/index.htm”明明的我但似乎有上述的缓存错误。我将与Go社区合作。

至于修复,添加页面的静态文件的app.yaml中做这项工作:

- url:/
    static_files: index.html 
    upload: index.html 

我会确保我添加所有其他静态文件夹了。

+0

不知道这是否有帮助,但Go使用文件的修改时间来确定是否返回“未修改”状态。如果该时间戳没有改变(或者某种程度上Go不能检索到),那么可以解释这个问题......也许看一下服务器返回的头文件。 – Caleb 2014-11-07 17:02:12

相关问题