在GAE python 2.7上我有一个文件夹,我提供我的CSS和JS文件。 app.yaml中的处理程序如下所示:
- url: /scripts
static_dir: scripts
expiration: '30d'
第一次缓存了一些JS文件,后续页面加载将直接从浏览器缓存中获取JS。但是,浏览器使用条件GET请求来获取CSS。在3G连接上,此请求的延迟仍然缓慢。
是否有任何规范说CSS无法在浏览器中缓存?任何想法为什么GAE以不同的方式缓存不同的文件?
我的网站可在http://test.dine-o.com/dine
访问注意从浏览器缓存中获取的zepto.min.js或plate-min - ####。js与使用条件GET获取的plate-min。####。css之间的区别。
答案 0 :(得分:0)
我试图解决的主要问题是在刷新页面时为CSS文件发出了条件GET。我假设这是因为没有设置缓存相关的标头。
看起来正在设置标头。干净的GET请求会显示缓存控制,etag和过期的适当标头。
看起来我正在遇到浏览器行为。我不确定这是否是标准的,但somehwat的行为符合此处描述的“用户调用的刷新”行为:http://blogs.msdn.com/b/ieinternals/archive/2010/07/08/technical-information-about-conditional-http-requests-and-the-refresh-button.aspx
如果我使用浏览器重新加载,Chrome会为CSS发出条件GET。在这种情况下,一些缓存头不存在,这使我认为问题最初是服务器端。
如果我转到网址栏并点击ENTER,Chrome会完全从缓存中获取CSS。
我能想到的唯一解决方案是使用AppCache。
答案 1 :(得分:0)
问题可能与"登录为管理员" appengine提供的功能。根据{{3}},
当用户以网站管理员身份登录时," X-AppEngine"标题表示 请求用户代理以管理员身份登录。当这些 标题存在, App Engine将禁止缓存 响应,以防止缓存和提供这些标头 其他用户。
非管理员用户的响应不应该是X-AppEngine 标题,不应该触发缓存抑制。
gae会抑制缓存功能,以避免" X-Appengine"被缓存
我的网站上有类似的非缓存问题,但我指定某些页面要缓存并过期。不确定它是否适用于您的情况。