现在我正试图从服务器上提供CSS和JS文件,这些服务器不允许我启用mod_gzip或mod_deflate.所以我写了一个小的PHP脚本来压缩GZIP并返回给用户.
示例代码:
$filename = "style.css";
if (!file_exists($filename) || !($info = stat($filename))) {
header("HTTP/1.1 404 Not Found");
die();
}
header("Date: ".gmdate("D, j M Y H:i:s e", time()));
header("Cache-Control: max-age=2592000");
header("Last-Modified: ".gmdate("D, j M Y H:i:s e", $info['mtime']));
header("Etag: ".sprintf("\"%x-%x-%x\"", $info['ino'], $info['size'], $info['mtime']));
header("Accept-Ranges: bytes");
header("Cache-Control: Expires ".gmdate("D, j M Y H:i:s e", $info['mtime']+2592000));
header("Content-Type: text/html");
ob_start("ob_gzhandler");
echo file_get_contents($filename);
ob_end_flush();
Run Code Online (Sandbox Code Playgroud)
我现在有两个问题.首先,我无法确定压缩文件的结果大小,以通知浏览器内容长度.通常,我会包括这一行:
header("Content-Length: ".$info["size"]);
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做,浏览器会在尝试等待更多数据时挂起.有没有办法计算总大小?或者我应该忽略这个头指令.
另一个问题是,每当我在Firefox中查看此PHP文件时,它都会尝试让我下载结果.在Chrome中,它只是像我期望的那样显示它.有什么建议?
编辑:感谢SoapBox,我用这个替换了代码的结尾:
header("Content-Encoding: gzip");
$compressed = gzencode(file_get_contents($filename), 5);
header("Content-Length: ".strlen($compressed));
die($compressed);
Run Code Online (Sandbox Code Playgroud)
这适用于内容长度!但我仍然让Firefox下载文件而不是显示它.:(
再次编辑: …
是否可以让Web服务器在没有Comet的情况下向Web浏览器发送消息?
像Facebook和谷歌这样的每个主要网络公司都使用Comet来实现这个目的,如果为主流浏览器启用了tcp连接,它就像是一个丑陋的黑客等待消失.
我想运行一个模拟,该模拟使用具有下限A,模式B和上限C的三角概率分布生成的值作为参数.如何在Python中生成此值?有没有像expovariate(lambda)(来自随机)这样简单的东西,或者我必须编写这个东西吗?
如何创建在搜索结果中的网站下显示的特殊链接?假设我在Google上搜索Stack Overflow,我得到的结果接近于此:

我询问的链接在上图中以红色标出.您在页面中放置了哪些内容以使其显示在搜索结果中,或者如何创建它们?
谢谢,
布雷特
我正在学习Ruby,并考虑制作二进制 - >十进制转换器.它获取二进制字符串并转换为十进制等效值.有没有办法跟踪ruby中的当前迭代步骤,以便可以删除变量'x'?
def convert(binary_string)
decimal_equivalent = 0
x=0
binary_string.reverse.each_char do |binary|
decimal_equivalent += binary.to_i * (2 ** x)
x+=1
end
return decimal_equivalent
end
Run Code Online (Sandbox Code Playgroud) 我使用Visual Studio 2008的"从现有代码创建项目向导",但显然以这种方式创建的项目不允许您创建虚拟解决方案文件夹,而只允许您创建实际的系统文件夹.我想有头文件,资源文件和源文件的标准项目设置,但我似乎无法创建所需的虚拟文件.有没有办法改变项目,以便它允许创建虚拟文件夹?
在我的一本书中有一篇关于人们将逗号输入整数并弄乱你的程序的评论,但它没有详细说明.这让我思考,所以我尝试编写一个小算法来获取std :: string并删除所有非整数字符.此代码编译但跳过输出.为什么没有任何内容被分配给newstring?if(isdigit(fstring [i]))是否评估为指向持有数字的地址为真?
//little algorithm to take the non-integers out of a string
//no idea on efficiency
#include <iostream>
#include <string>
int main()
{
std::cout << "Enter a number with non-integer characters: ";
std::string fstring;
getline(std::cin, fstring);
std::string newstring;
int i = 0, x = 0;
while (i != fstring.length())
{
if (isdigit(fstring[i]))
{
newstring[x] = fstring[i];
i++;
x++;
}
else
{
i++;
}
}
std::cout << std::endl;
std::cout << newstring;
system("PAUSE");
}
Run Code Online (Sandbox Code Playgroud)
次要问题,可能属于其他地方:如何将字符串转换为int(或浮点数)?
我要做的是以下内容:我有一个值数组,这些值最终将用于生成随机唯一字符串,但稍晚一点.首先,我想循环遍历数组中的所有值(foreach循环),然后我想限制它(while循环)这是一个正确的方法吗?
下面的代码不起作用,任何人都可以看到我做错了什么?
<?php
$array = array(
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z', '!', '£', '$', '%',
'^', '&', '*', '(', ')', '_', '+', '{', '}'
);
$length_of_unique_key = 15;
$counter = 0;
foreach($array as $values)
{
$counter++;
while ($counter <= $length_of_unique_key)
{
}
}
?>
Run Code Online (Sandbox Code Playgroud) 也许是一个哲学问题.我最近在GUI中看到了一些有趣的视觉效果,主要是在原生平台API上.我知道"它只是软件"而且很可能,通过足够的工作,可以用像素完成任何事情.问题是(终于!),Java真的是一个用GUI做奇特事情的选择.我想这似乎是一个愚蠢的事情,但我有点像Windows Presentation Foundation的一些工作.对于Java,我没有看到像这样的综合努力.我应该在哪里看?