2013-05-03 27 views
2

在GAE Python 2.7我有一个文件夹,我服务我的CSS和JS文件。在我的app.yaml处理程序是这样的:我可以强制GAE为CSS文件设置缓存标头吗?

- url: /scripts 
    static_dir: scripts 
    expiration: '30d' 

一些JS文件都是围绕高速缓存的第一次,和随后的页面加载将直接从浏览器缓存中获取JS。但是,浏览器使用条件GET请求来获取CSS。这个请求的延迟在3G连接上仍然很低。

是否有任何说CSS不能缓存在浏览器中?任何想法为什么GAE缓存不同的文件不同?

我的网站是可访问的http://test.dine-o.com/dine

通知zepto.min.js或板分钟之间的差 - 。#### JS其是从浏览器高速缓存中取出,和板状分钟###。使用条件GET获取#.css。

+0

看起来像你有像我一样的问题。它只是设置和使用'ETag'标题。它根本不设置'Expires'标题。http://stackoverflow.com/questions/16404561/why-is-gae-dev-appserver-only-setting-etag-but-not-expires-http-header – stun 2013-05-06 18:11:42

回答

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。在这种情况下,一些缓存头文件不存在,这就是我最初认为问题是服务器端的原因。

如果我转到URL栏并按ENTER,Chrome将纯粹从缓存中获取CSS。

我能想到的唯一解决方案就是使用AppCache。

0

问题可能与由appengine提供的“作为管理员登录”功能有关。据this post

的“X-应用服务引擎”报头的存在表明所述 请求的用户代理被登录为管理员。当这些 标题存在时,App Engine将禁止缓存 响应,以防止将这些标头缓存并提供给其他用户 。

对非管理员用户的响应不应该有X-AppEngine 标题,并且不应触发高速缓存抑制。

GAE抑制当用户登录的网站的管理员,以避免“X-AppEngine上”被缓存

我有一个类似的非缓存问题在我的网站的缓存能力,虽然我指定某些页面被缓存并到期。不知道它是否适用于你的情况,但不。

相关问题