Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的打包、缓存、JS和CSS,区分开发环境和生产环境_Php_Javascript_Css_Optimization_Deployment - Fatal编程技术网

PHP中的打包、缓存、JS和CSS,区分开发环境和生产环境

PHP中的打包、缓存、JS和CSS,区分开发环境和生产环境,php,javascript,css,optimization,deployment,Php,Javascript,Css,Optimization,Deployment,我正在努力使开发变得容易,并在生产中实现高度优化产量 我尝试做的目标是: 快速制作制作页面我希望谷歌页面速度和YSlow返回最佳分数。这意味着: 组合并压缩JS文件和CSS,并将组定位在HTML中正确的位置(页面底部或顶部)。对于.js来说,Google闭包似乎是最好的选择 .JS和.CSS被智能缓存,但请确保在更新.JS或CSS组件时重新加载它们。301文件未更改等 缓存类型:我认为磁盘上的缓存很好。考虑APC和MeMax或ReDIS,如果它们显著提高速度。 能够在必要时指定并使用.JS的延

我正在努力使开发变得容易,并在生产中实现高度优化产量

我尝试做的目标是:

  • 快速制作制作页面我希望谷歌页面速度YSlow返回最佳分数。这意味着:
  • 组合并压缩JS文件和CSS,并将组定位在HTML中正确的位置(页面底部或顶部)。对于.js来说,Google闭包似乎是最好的选择
  • .JS和.CSS被智能缓存,但请确保在更新.JS或CSS组件时重新加载它们。301文件未更改等
  • 缓存类型:我认为磁盘上的缓存很好。考虑APC和MeMax或ReDIS,如果它们显著提高速度。
  • 能够在必要时指定并使用.JS的延迟加载,或者至少不阻止页面呈现
  • (可选)也压缩HTML
  • 使网站开发变得简单
  • 当您希望包含.js或.css并仅在生产环境中压缩它们时,请在.php文件中使用short命令
    • 使用pack_js(['first.js','second.js''third.js'])pack_css(['first.less','second.less''third.css'],true)
    • 很容易配置开发或生产环境。可能只是调用SetDebug(true或false)默认产量
    • 易于设置缓存文件夹源文件夹
  • 使用LESS来减少CSS开发的麻烦。在生产环境中自动在CSS中编译较少的文件,但在开发环境中使用LESS.js,这样每次在开发环境中更改.LESS文件时,它都会在服务器上更新
  • (可选)在开发中,它包括一个JS和一个更少的控制台,类似于
注意:如果Apachee模块和.htaccess文件显著加快了处理速度,则可以使用它们。但它应该能够快速设置它们,理想情况下只需一个设置命令

有什么东西能做到这一点吗?或者什么是开始的最佳资源

我更喜欢一个由PHP脚本(最终是一些.PHP文件,.htaccess和压缩可执行文件)组成的解决方案,该脚本使用Google闭包编译器压缩.JS,并压缩/编译CSS/LESS文件,去掉无用的注释和空白。可以在生产服务器上使用特殊的cookie来输出开发版本

我希望:

一个像这样可用的php函数:pack_js(['first.js','second.js','third.js'])编写如下内容:

在服务器上:

<script type="text/javascript" src="static/js/first.js"></script>
<script type="text/javascript" src="static/js/second.js"></script>
<script type="text/javascript" src="static/js/third.js"></script>
<link rel="stylesheet/less" href="/static/css/first.less" type="text/css" />
<link rel="stylesheet/less" href="/static/css/second.less" type="text/css" />
<link href="/static/css/third.css" type="text/css" />
<script src="http://lesscss.googlecode.com/files/less-1.0.21.min.js"></script>

<script type="text/javascript" charset="utf-8">
    less.env = "development";
    less.watch();
</script>

在生产服务器上(如果不存在特殊cookie):


另一个函数:pack_css(['first.less','second.less','third.css'],true)它编写如下内容:

在服务器上:

<script type="text/javascript" src="static/js/first.js"></script>
<script type="text/javascript" src="static/js/second.js"></script>
<script type="text/javascript" src="static/js/third.js"></script>
<link rel="stylesheet/less" href="/static/css/first.less" type="text/css" />
<link rel="stylesheet/less" href="/static/css/second.less" type="text/css" />
<link href="/static/css/third.css" type="text/css" />
<script src="http://lesscss.googlecode.com/files/less-1.0.21.min.js"></script>

<script type="text/javascript" charset="utf-8">
    less.env = "development";
    less.watch();
</script>

less.env=“开发”;
少看(;
在生产服务器上(如果不存在特殊cookie):


第二个参数指定是否应在开发服务器上输出less.js

显然,12a42323bfe339ea9w.js和46537a8b8e876f7a8e7.css是脚本的优化、打包和编译版本。此解决方案应该能够检测源文件何时更改,并重新编译用于生产的脚本。它应该可以配置为与脚本的位置和缓存类型有关(磁盘可以)。理想情况下,pack_js应该有一个选项,可以在生产中延迟加载js


欢迎所有建议。

为什么不使用项目构建系统将应用程序部署到生产服务器上呢?对于PHP,您可能会喜欢,因为它允许您在PHP中编写额外的插件,您可以在部署时执行这些插件。你可能想考虑的其他选项是,(还有很多其他的),但是这些需要其他语言的知识(当然,如果你真的想……,你可以从他们开始PHP解析器)。p> 我使用过一个具有类似需求的流程,但我们采用了一些不同的方法。我意识到这可能并不完全是你想要的,但我还是会提出一些建议:

  • 将压缩/编译作为发布过程的一部分。(您可能已经在这样做了,但从上面看不清楚)
  • 在开发服务器上对其进行压缩/编译。调试/测试可能会很麻烦,但您希望能够确保生产版本和测试版本尽可能相似。如果您拥有多个开发阶段的优势,那么您可以压缩其中一个阶段
  • 仅在通过某种质量扫描(例如)时才进行压缩/编译
  • 不要将模块组合在一起-将它们分开。您将获得的性能优势微不足道,几乎毫无意义
  • 不要更改HTML,只需更改依赖模块的内容

  • 我意识到这与您的预期有点不同,但根据我的经验,这将导致一个更强大的开发促进模式。

    仍在努力探索利用现有资源的最佳解决方案

    CSS JS助推器涡轮机到目前为止看起来是最好的起点:和

    其他JS/CSS组合器解决方案和文章
    • 很好,但似乎有点难以配置
    • 让你像这样使用sintax:(不完全是最好的)我也认为我看到了这个补丁