使用 PHP 回显 css 和 HTML 内的 js 内容
Echo content of css and js inside HTML using PHP
为了减少http请求,可以使用php内联css和js吗?
例如:
<style>
<?php echo require_once("css/style.css"); ?>
</style>
<script>
<?php echo require_once("js/myjs.js"); ?>
</script>
这对我来说是一个非常糟糕的做法。另外,我看不出你在这里会如何获得任何性能提升,更像是相反。
你应该更多地关注什么时候你真的需要加载你的 js 和 css。缩小它也应该有所帮助。
我先回答你问题的后半部分,然后再应用前半部分。
"是否可以使用 php 内联 css 和 js" - 是的。在某些情况下,将 CSS 和 JS 添加到文档的内部样式表中是个好主意。
然而,您的方法可以做很多改进。一个快速的方法是像这样使用 file_get_contents
:
echo '<style type="text/css">'.file_get_contents('/path-to-your/style.css').'</style>';
我建议抓取文件内容并将其直接添加到文档中的唯一情况是涉及为 CMS 系统(如 Wordpress 或 Joomla 等)编写插件的情况。
有时,您的插件可能只需要使用 5 - 10 行 CSS and/or JS,强制使用您的插件是不好的形式用户只需将 another 样式表添加到他们的 http 请求中,代码就这么少。在这些情况下,我建议加载内部 stylesheets/scripts.
但是按照问题的前半部分所问,“减少 http 请求”并不是一个好主意.如果你真的想减少你的 http 请求,那么你应该认真考虑合并你的样式表和脚本文件。有几个大文件比有很多小文件要好。
将 JS 或 CSS 等资源打印到文件中以更快地加载它们对我来说绝对是不好的做法。现代浏览器最终会在用户点击您的第一页时缓存它们。
根据我的说法,您可以尝试缩小资源文件以更快地加载它们并根据需要改进缓存,但没有必要这样做,因为所有现代浏览器现在都可以很好地处理缓存。
为了尽可能快地加载 CSS 并同时利用浏览器缓存,我这样做了:
我为首次访问者检查或设置了 cookie;如果它是第一次访问者,我加载 CSS 内联 + 预取实际的 link(请注意,我使用预取,因为现代浏览器广泛支持它而不是预加载)。这样,此访问者将在下次访问或下一次 page/s.
时从缓存中获取预取的 CSS
if(isset($_COOKIE['v'])) $CSS='<link href="default.css" rel="stylesheet">';
else {
$CSS='<style>'.file_get_contents('default.css').'</style><link rel="prefetch" href="default.css">';setcookie('v','1',time()+31556926,'/','example.com',1,1);
}
为了减少http请求,可以使用php内联css和js吗? 例如:
<style>
<?php echo require_once("css/style.css"); ?>
</style>
<script>
<?php echo require_once("js/myjs.js"); ?>
</script>
这对我来说是一个非常糟糕的做法。另外,我看不出你在这里会如何获得任何性能提升,更像是相反。
你应该更多地关注什么时候你真的需要加载你的 js 和 css。缩小它也应该有所帮助。
我先回答你问题的后半部分,然后再应用前半部分。
"是否可以使用 php 内联 css 和 js" - 是的。在某些情况下,将 CSS 和 JS 添加到文档的内部样式表中是个好主意。
然而,您的方法可以做很多改进。一个快速的方法是像这样使用 file_get_contents
:
echo '<style type="text/css">'.file_get_contents('/path-to-your/style.css').'</style>';
我建议抓取文件内容并将其直接添加到文档中的唯一情况是涉及为 CMS 系统(如 Wordpress 或 Joomla 等)编写插件的情况。
有时,您的插件可能只需要使用 5 - 10 行 CSS and/or JS,强制使用您的插件是不好的形式用户只需将 another 样式表添加到他们的 http 请求中,代码就这么少。在这些情况下,我建议加载内部 stylesheets/scripts.
但是按照问题的前半部分所问,“减少 http 请求”并不是一个好主意.如果你真的想减少你的 http 请求,那么你应该认真考虑合并你的样式表和脚本文件。有几个大文件比有很多小文件要好。
将 JS 或 CSS 等资源打印到文件中以更快地加载它们对我来说绝对是不好的做法。现代浏览器最终会在用户点击您的第一页时缓存它们。
根据我的说法,您可以尝试缩小资源文件以更快地加载它们并根据需要改进缓存,但没有必要这样做,因为所有现代浏览器现在都可以很好地处理缓存。
为了尽可能快地加载 CSS 并同时利用浏览器缓存,我这样做了:
我为首次访问者检查或设置了 cookie;如果它是第一次访问者,我加载 CSS 内联 + 预取实际的 link(请注意,我使用预取,因为现代浏览器广泛支持它而不是预加载)。这样,此访问者将在下次访问或下一次 page/s.
时从缓存中获取预取的 CSSif(isset($_COOKIE['v'])) $CSS='<link href="default.css" rel="stylesheet">';
else {
$CSS='<style>'.file_get_contents('default.css').'</style><link rel="prefetch" href="default.css">';setcookie('v','1',time()+31556926,'/','example.com',1,1);
}