(问题编辑b / c我已经意识到它涉及文件类型)
此文件为20kb。它一直采取>服务1秒钟。
http://www.adrenalinemobility.com/js/ss-symbolicons.js
以下是带有.css的相同文件,因为它的扩展名为:
http://www.adrenalinemobility.com/js/ss-symbolicons.css
它的速度提高了近1秒。
这是我的app.yaml:
application: adrenaline-website
version: 1
api_version: 1
runtime: python27
threadsafe: true
libraries:
- name: jinja2
version: latest
handlers:
- url: /favicon\.ico
static_files: assets/favicon.ico
upload: assets/favicon\.ico
- url: /css
static_dir: assets/css
- url: /img
static_dir: assets/img
- url: /js
static_dir: assets/js
- url: /.*
script: web.APP
我也试过这个static_files
行(在/ js处理程序之前),而且它也很慢:
- url: /js/ss-symbolicons.js
static_files: assets/js/ss-symbolicons.js
upload: assets/js/ss-symbolicons.js
我观察到的方式:
这是一个网页测试瀑布图,说明了这个问题 - 请注意,一个文件有一个巨大的TTFB:http://www.webpagetest.org/result/131101_ZQ_ZGQ/1/details/
如果我手动将mime_type设置为text
,那么它会很快。 application/javascript
,application/x-javascript
,text/javascript
都很慢。目前,如果您想进行测试,这些文件的服务没有手动指定的mime类型。
更多信息,正如jchu注意到的那样:
慢速版本适用于:Content-Length: 19973
,快速版本适用于:Transfer-Encoding: chunked
更多细节:
我通常会得到服务器74.125.28.121
。 reddit上的某个人获得了服务器173.194.71.121
,它们之间甚至可以提供服务速度。那么它可能依赖于服务器/位置?
Here is a pastebin with full curl logs of requests for both files
答案 0 :(得分:3)
将mime_type:text添加到JavaScript静态资源。
需要研究假设mime_type是什么,对于文本和其他mime类型正在做什么聪明的技巧......
答案 1 :(得分:1)
我一直看到同样的行为。
GAE对这些javascript文件有一些奇怪的边缘缓存行为。在第4次或第五次连续请求之后,响应时间显着改善(gzip压缩内容的某种类型的边缘缓存开始)。在我的实验中,它从1.2秒左右开始 - > 190ms
我已经能够在3个GAE应用程序中一致地重现这一点。 如果您使用Chrome,则可以转到DevTools设置并禁用缓存(当DevTools打开时)。重新加载页面几次会使您的javascript传输时间缩短到合理的数量。
谷歌的边缘缓存可能有一些逻辑,它确定它不会打扰缓存gzipped js文件,直到它们被频繁请求。这似乎鼓励您编写一个不断下载js文件的脚本,以确保它们下载速度快几百毫秒。我怀疑边缘缓存足够智能,但一次只能缓存一个区域。