gpt4 book ai didi

php - 如何正确服务 CSS

转载 作者:技术小花猫 更新时间:2023-10-29 10:29:44 24 4
gpt4 key购买 nike

假设我出于某种原因想通过 PHP 提供我的 CSS(因为预处理、合并等)。我需要在我的 PHP 中做什么才能使它正常工作?除了最明显的:

header('content-type: text/css; charset=utf-8');

与缓存、修改时间、etag 等相关的 header 呢?我应该使用哪些,为什么以及如何使用?我将如何解析传入的 header 并做出适当的响应(例如 304 Not Modified)?


注意:我知道这可能很棘手,而且在我将它部署为常规 CSS 文件之前,只用 CSS 做我想做的事情会容易得多。如果我想那样做,我就不会问这个问题了。我很好奇如何正确地做到这一点,并想知道。我事先使用 CSS 做什么或可以做什么是无关紧要的;我只想知道如何正确地提供服务:)

注意 2: 我真的很想知道如何正确地执行此操作。我觉得关于这个问题的大部分事件都变成了我为我为什么要这样做辩护,而不是得到如何做的答案。如果有人能回答我的问题而不是仅仅建议像 SASS 这样的东西,我将不胜感激。我确信它很棒,我可能会在某个时候尝试一下,但这不是我现在要问的。我想知道如何通过 PHP 提供 CSS,并了解如何正确处理缓存和类似的事情。

最佳答案

值得称赞的努力。缓存获得的善意太少了。请欣赏我试图在您的道路上为您提供帮助的简短散文。

总结

发送 ETagLast-Modified header 将使浏览器能够发送 If-Modified-Since If-None-Match header 在后续请求中返回到您的服务器。然后,如果适用,您可以使用 304 Not Modified HTTP 状态代码和空主体进行响应,即 Content-Length: 0。包含一个 Expires header 将帮助您有一天在内容确实发生变化时提供新内容。

学徒

听起来很简单,但要恰到好处可能有点棘手。对我们所有人来说幸运的是,有 really good guidance可用。

启动并运行后,请转到 REDbot帮助您消除可能留下的任何粗糙 Angular 落。

专家

对于 ETag 的值,您会希望拥有可以复制的内容,但无论内容何时更改,它仍然会发生变化。否则你将无法判断传入的值是否匹配。通过缓存提供的文件的 mtime 的 MD5 哈希值是可重现值的一个很好的候选者,该值在内容发生变化时仍然会发生变化。在您的情况下,它可能是要合并的所有文件的总和。

对于 Last-Modified,逻辑答案是所服务文件的实际 mtime。为什么要忽视显而易见的事情。或者对于一组文件,如您的情况,使用该组中最新的 mtime

对于Expires,只需为 Assets 选择一个合适的TTL,或生存时间。将此数字添加到 Assets 的 mtime,或您为 Last-Modified 选择的值,您就得到了答案。

您可能还想包含 Cache-Control header ,让可能的代理知道如何正确地为他们的客户提供服务。

学者

要更具体地回答您的问题,请参阅您之前提出的这些问题:

关于php - 如何正确服务 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com