PHP - 使用 GZIP 压缩静态 css 文件

2023-12-27

所以我有一个CSS文件,style.css。在同一目录中我有 images/ 文件夹。 如何制作一个压缩 style.css 的脚本,但来自另一个文件夹?

现在我有这个:

<?php
  if(isset($_GET['css'])) $file = array('url' => htmlspecialchars($_GET['css']), 'type' => 'text/css');
  if(isset($_GET['js'])) $file = array('url' => htmlspecialchars($_GET['js']), 'type' => 'application/javascript');
  if(!isset($file)) exit();

  header('Content-type: '.$file['type']);
  header('Cache-Control: max-age='.(60*60*6).', must-revalidate');  

  // whitespace+comment removal, in case gzip is off
  function compress($buffer){
    global $file;
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
    $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), ' ', $buffer);
    return $buffer;
  }

  if(extension_loaded('zlib'))
    if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler");

  else ob_start("compress");

  include($file['url']);    
  ob_end_flush();
?>

并像这样使用它:

<style type="text/css">
 @import "http://mysite.com/lib/c.php?css=../style.css";
</style>

一切都很好,除了 css 文件内图像的路径不再起作用。 我认为这是因为 (images/bg.jpg) 变成了 (../images/bg.jpg)

我可以解决这个问题,而不必将我的 c.php 脚本移动到与样式表相同的目录中吗?


如果您的网络服务器有这样的功能,您可以使用 URL 重写来保持整洁。

mod_rewrite 的示例:

RewriteRule ^images/style\.css$ lib/c.php?css=../style.css

然后,您可以简单地:

@import "http://mysite.com/images/style.css";

我还建议您再看一下您的脚本。如果我加载此 URL 会发生什么?

http://mysite.com/lib/c.php?css=.htpasswd
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - 使用 GZIP 压缩静态 css 文件 的相关文章

  • 检查 PHP 中的字符串长度

    我有一个长度为 141 个字符的字符串 使用下面的代码我有一个if如果字符串大于或小于 140 则语句返回一条消息 libxml use internal errors TRUE dom new DOMDocument dom gt loa
  • 来自 JSON 的 Angular 8 动态表单

    我正在尝试从 JSON 模式递归生成动态表单 但我正在努力解决找不到表单控件的问题 这是代码示例 我收到这个错误 错误错误 找不到名称为 createdAt 的控件 我尝试了不同的方法 但仍然存在问题 我知道我错过了一些东西 所以请帮忙 任
  • 如何在多次尝试后延迟登录尝试 (PHP)

    我正在开发一个用 PHP 构建的相当大的网站 该网站可能会有很多用户 我正在寻找一种方法来保护登录屏幕免受自动尝试的影响 我已经在注册表中添加了验证码检查 但还想进一步强化网站 据我所知 StackOverflow 上也有类似的问题 而且我
  • 为什么需要重置浏览器?

    好吧 我知道这可能不是最好的标题why我们需要重置浏览器 因为浏览器有不同的默认设置 我的问题太长 无法放入标题中 如果每个人 90 的时间都需要使用重置样式表 为什么浏览器需要设置默认样式 无论如何我们都会删除它们 对吗 因为某些规则默认
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • Facebook PHP SDK - 如何获取访问令牌?

    我正在尝试从我的应用程序在用户的 Facebook 墙上发帖 用户授予应用程序在他的墙上发布的权限 并且我在数据库中有用户ID 我需要自动发送帖子 而无需用户再次登录 我的代码是 try require once dirname FILE
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • Codeigniter - 出现 404 Not Found 错误

    我们在 godaddy 有两个托管套餐 我们的实时网站使用以下 htaccess 文件运行良好 无需在 url 中使用 index php 即可访问网站 RewriteEngine On RewriteCond REQUEST FILENA
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • 如何延迟加载嵌入在 iframe 上的 YouTube 视频?

    如何将延迟加载应用于iframe嵌入视频 我尝试添加loading eager loading auto and loading lazyload 您可以使用srcdoc你里面的属性iframe标签来加载图像 请参阅以下示例作为参考
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4
  • 带显示块的SPAN

    和默认有什么区别 div 元素和默认值 span 元素与display block HTML 元素的有效性和语义存在差异 否则它们是相同的 div and span两者都被定义为通用容器 在 HTML 方面没有更深层次的含义 一个默认为块显
  • 如果产品重量超过1000克,如何以公斤为单位显示

    在 Storefront 主题中 我使用下面的代码将格式化重量从 1000g 更改为 1kg add action woocommerce after shop loop item title show weight 10 function

随机推荐

  • 出现错误:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误

    我是新手开发者 我在尝试从我的计算机连接到 SQL Server 到服务器计算机时遇到问题 建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误 服务器未找到或无法访问 验证实例名称是否正确以及 SQL Server 是否
  • Highcharts 上下文菜单按钮在同一图表中出现三次

    I am creating a highcharts But when the chart finishes loading i can see 3 buttons for context menu and only one of them
  • 我如何了解我的库是什么标准以及 gcc 在我的计算机中编译的标准是什么?

    这是来自我的终端 Korays MacBook Pro koraytugay gcc version Configured with prefix Library Developer CommandLineTools usr with gx
  • 为什么 (0 < a < 5) 这样的条件总是成立?

    我用C实现了以下程序 include
  • 使用 Selenium 测试 Angularjs 应用程序

    我正在测试 Angular js 应用程序 Link Angular js 应用程序 http iarouse com demo index html product square 当我单击 Web 应用程序上的 UI Kit 链接时 出现
  • Interface Builder 中的 PNG 透明度

    我在 Interface Builder 中添加一个带有透明 PNG 导航栏中的徽标 的图像视图 但透明像素似乎呈现为白色 我在 Interface Builder 中搜索了 PNG 但没有成功 有小费吗 确保视图属性的 绘图 部分中的 不
  • Git 日志:致命对象 [sha1] 已损坏

    有什么方法可以修复我的存储库并保持提交历史记录完好无损 git log fatal object 01aeb2bf2e93b238f0e0422816b3e55518321ae7 is corrupted 从阅读下面的链接来看 我似乎要删除
  • Asp.net Mvc3 webgrid 和分页

    我正在尝试学习Asp net mvc 我知道它与形式不同 我可能需要改变我的思维方式 我的问题是关于 webgrid 的 当我将 webgrid 添加到我的页面并使用 Post 按下搜索按钮时 它会使用寻呼机等呈现表格 但是寻呼机上的链接不
  • Linux 内核中 IRQ 和中断向量之间的区别

    当涉及到内核 API 的工作时 我对 IRQ 和向量有点困惑 我想使用向量 0xfa 进行一些由可编程 lapic 生成的中断处理 我查看了 API 例如request irq and set intr gate also alloc in
  • 结合 Git Bash 并在 CMDER 中的当前文件夹中打开

    请描述我 谁有这样的经验 如何正确设置CMDER的选项以在当前文件夹中使用Git Bash打开新控制台 例如在此处打开CMDER 该字符串不起作用 C Program Files x86 Git bin sh exe login i new
  • 使用来自存储 C#.Net CNG 的密钥进行 ECDSA 签名文件

    我正在尝试使用 CNG API 和 Microsoft 证书存储中的证书通过 ECDSA 签署文件 我已经阅读了大量文档并且即将完成 但我对从证书导入私钥感到困惑 我已经用 RSA 做了同样的事情 但它的做法似乎非常不同 这是我到目前为止的
  • bash 中的 for 循环只是打印 n 次命令而不是重复

    我有一个包含 6000 多行的 input txt 文件 如果一行 a 包含超过 10 个单词 那么我希望将其拆分 但不是在第 10 个单词处 而是在第一个逗号字符出现的位置处 并且 如果新行也有超过10个单词 那么它也应该被拆分 并不断重
  • 堆叠特征中 super 的含义取决于调用站点?

    我无法用语言对此进行很好的描述 所以 请看这个例子 trait Base def foo Base trait One extends Base override def foo One lt super foo trait Two ext
  • Emacs 中的缓冲区切换

    我想模拟 Alt Tab 因为它适用于 GTK 上的各个窗口 但在 emacs 中的缓冲区内使用 Ctrl Tab 因此 举例来说 如果我在 emacs 中打开了 10 个缓冲区 而我目前正在处理两个缓冲区 例如 Buffer1 和 Buf
  • 企业库错误

    我收到有关我们的生活环境中罕见的间歇性错误的报告 我试图重现它但没有成功 而且这个错误本身有点神秘 除此之外 它似乎涉及企业库跟踪 我们使用的是 5 0 版本 总而言之 有点痛苦 这发生在 Windows Sever 2008 上 应用程序
  • Windows 8 应用程序本地存储

    我正在尝试使用 C 开发 Windows 8 应用程序 我需要在本地设置中存储两个列表 字符串和日期时间 List
  • HTTP/2 中是否有必要缓存bust?

    在 HTTP 1 中 为了避免额外的网络请求来确定资源是否应该保留缓存 我们将设置一个高值max age or Expires静态资产的值 并为每个修订版提供唯一的 URL 但在 HTTP 2 中 请求很便宜 所以我们可以在不清除缓存的情况
  • 有没有一种简单的方法可以从两个整数复合键创建唯一的整数键?

    由于与问题不太相关的各种原因 我有一个表 其中包含由两个整数组成的复合键 我想从这两个数字中创建一个唯一的键 我最初的想法是连接它们 但当我意识到 51 1 的复合键会产生与 5 11 相同的唯一键 即 511 时 我很快遇到了问题 有没有
  • 以编程方式访问 Excel 自定义文档属性

    我正在尝试将自定义属性添加到以编程方式创建的工作簿中 我有一个用于获取和设置属性的方法 但问题是工作簿为 CustomDocumentProperties 属性返回 null 我无法弄清楚如何初始化此属性 以便我可以从工作簿中添加和检索属性
  • PHP - 使用 GZIP 压缩静态 css 文件

    所以我有一个CSS文件 style css 在同一目录中我有 images 文件夹 如何制作一个压缩 style css 的脚本 但来自另一个文件夹 现在我有这个