如何解决按需生成 css 但我得到 net::ERR_ABORTED 404
我正在使用 php 动态生成 css 文件。因此我的 HTML 包含代码:
<link rel="stylesheet" href="/ap.css.php">
因为它是 PHP,所以浏览器(正确地)不会缓存它。但是,这会导致后续页面访问的不必要开销,因为所有页面都使用相同的结果 CSS(尽管对于不同的用户可能会有所不同)。
我想我可能只在出现 404 错误时生成一次常规 CSS 文件。我假设客户端会缓存它。 IOW我放入了HTML:
<link rel="stylesheet" href="/ap.css">
...然后我写了一个 404 脚本,它会巧妙地间接调用 /ap.css.php。
我的意图是客户端因此只请求一次,并在所有后续页面访问中使用缓存的结果,减少页面加载和数据使用(尤其是手机)。
现在我可以在地址栏上输入 ap.css 文件名,果然,404 处理程序提供了所需的 CSS 输出,但是当使用 HTML 中的链接时,它仍然被 404 中止。
...所以我尝试放入一个特殊的 text/css 标题。唉,按照标题给出错误消息没有区别。
<?php
header_remove(); // try to remove any file not found header that might have been queued
header('Content-Type: text/css');
?>
有什么办法可以禁用这个 404 中止,或者我必须选择为每个页面访问一遍又一遍地生成 CSS,还是让它为每个人都使用相同的常规静态 CSS 文件?
解决方法
让我们退后一步,看看实际问题:
- 您想使用 PHP 生成 CSS
- 您不希望浏览器每次加载新页面时都重新请求它
这个问题的解决方案是缓存。
您似乎试图通过在 URL 中使用 .css
来获得缓存的效果,但 HTTP 服务器通常为静态文件设置“缓存我”规则,并且“不要缓存我”规则适用于动态文件,无论 URL 是什么样的。
您应该回到开头,那里有一个简单的 PHP 程序,在 URL 中包含 .php
,然后从您的 PHP 输出缓存控制标头。
我建议您阅读excellent caching tutorial,以确定哪些缓存规则最适合您。
header("Cache-Control: max-age=86400");
... 可能适合“缓存 1 天”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。