我有一个Web服务,为浏览器提供javascript源文件.javascript文件是由php实时编译的,包含一些文件.生成的文件每天只更改几次.它在被提供给浏览器之前被apache压缩.
我想使用memcached从内存中提供服务,以避免磁盘和cpu加载文件包含和重复gzip.
我的问题是如何在memcached中压缩和存储javascript文件并提供它(来自php)?
在我看来,如果文件不在存储中,我应该通过include获取文件,获取输出缓冲区,gzip并将其存储在memcached中.我对么?是否有一些标题我应该添加到输出或我应该做的其他任何事情,以使结果与我的apache当前服务的gzip文件兼容?
更新:我没有提到该文件有多个由url参数控制的变体,这会导致包含不同的def文件.如上所述,每个变化都是静态的.
最好是使用适当的工具来完成它们的设计任务.
在您的情况下,您有一个缓慢变化的文件,将静态提供.我的意思是它不依赖于查询,但对于每个查询在其有效时间内它是相同的.
为此,请使用良好的缓存Web服务器或将缓存/负载均衡器放在服务器前面.无论是Squid,Varnish还是NginX都可以.事实上,其中任何一个都可以像memcached一样快速地提供静态文件.只要确保自己压缩文件并像这样服务它.
memcached以写入速度,而不是服务来击败其中任何一个.因此,对于随查询参数而变化的内容,它是最佳答案,因此必须不断生成和过期(并重叠).
由于您只会压缩和写入文件几次,因此压缩/写入时间无关紧要.之后,多级缓存将为您带来最佳性能.
另请注意,由于mencached不是Web服务器,因此它的缓存不像客户端那样"关闭",因为它可以取消任何假设的读取性能优势