Svi*_*ish 12 css php caching header
说我出于某种原因想通过PHP提供我的CSS(因为预处理,合并等).我需要在PHP中做些什么来使这项工作顺利进行?除了最明显的:
header('content-type: text/css; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)
那么与缓存,修改时间,etags等相关的标题呢?我应该使用哪些,为什么以及如何使用?我如何解析传入的标头并做出适当的响应(例如304 Not Modified)?
注意:我知道这可能很棘手,在我将它作为常规CSS文件部署之前,做我想做的事情要容易得多.如果我想这样做,我就不会问这个问题了.我很好奇如何正确地做到这一点,并想知道.我事先用CSS做或不能做的事情是无关紧要的; 我只是想知道如何正确地服务:)
注2:我真的很想知道如何正确地做到这一点.我觉得这个问题上的大部分活动都变成了我为什么要这样做而捍卫我,而不是得到如何做到这一点的答案.如果有人能够回答我的问题而不仅仅是建议像SASS这样的事情,我将非常感激.我确定它很棒,我可能会在某个时候试一试,但这不是我现在要问的问题.我想知道如何通过PHP提供CSS,并学习如何正确处理缓存和类似的事情.
值得称道的努力.缓存得到的好处太少了.请尽情享受我的短篇小说,试图帮助您.
发送ETag和Last-Modified头将使浏览器发送一个If-Modified-Since和If-None-Match后续请求头回您的服务器.然后,您可以在适用时使用304 Not ModifiedHTTP状态代码和空体响应,即Content-Length: 0.Expires当内容确实发生变化时,包含标题可帮助您在一天内提供新内容.
听起来很简单,但要做得恰到好处可能有点棘手.幸运的是,我们所有人都有很好的指导.
一旦你开始运行,请转到REDbot,以帮助你消除你可能留下的任何粗糙的角落.
对于它的价值ETag,你会希望有一些你可以重现的东西,但是只要内容有效,它仍然会改变.否则,您将无法判断传入值是否匹配.当内容发生时仍然会改变的可再现值的良好候选者是mtime通过缓存提供的文件的MD5哈希.在您的情况下,它可能是所有合并文件的总和.
对于Last-Modified逻辑答案是mtime正在提供的文件的实际情况.为什么忽视明显的.或者对于一组文件,如在您的情况下,使用最新mtime的文件.
因为Expires,只需TTL为资产选择合适的或生存时间.将此数字添加到资产mtime或您选择的值Last-Modified,您就可以得到答案.
您可能还希望包含Cache-Control标题,以便知道如何正确地为其客户提供服务.
要对您的问题做出更具体的回答,请在您之前参考这些问题:
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |