问题列表 - 第1033页

如何强制Web浏览器不缓存图像

背景

我正在为两个无偿网站编写和使用一个非常简单的基于CGI(Perl)的内容管理工具.它为网站管理员提供HTML表单,用于填写字段(日期,地点,标题,描述,链接等)的事件并保存.在该表单上,我允许管理员上传与事件相关的图像.在显示表单的HTML页面上,我还显示了上传图片的预览(HTML img标签).

问题

当管理员想要更改图片时,会发生此问题.他只需点击"浏览"按钮,选择一张新照片然后按确定即可.这很好用.

上传图像后,我的后端CGI处理上传并正确地重新加载表单.

问题是显示的图像没有刷新.即使数据库保存正确的图像,仍会显示旧图像.我已将其缩小到图像在Web浏览器中缓存的事实.如果管理员点击Firefox /资源管理器/ Safari中的RELOAD按钮,则所有内容都会刷新,并且只会显示新图像.

我的解决方案 - 不工作

我试图通过写一个过去很远的日期的HTTP Expires指令来控制缓存.

Expires: Mon, 15 Sep 2003 1:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

请记住,我在管理方面,我并不关心页面是否需要更长时间才能加载,因为它们总是过期.

但是,这也不起作用.

笔记

上传图像时,其文件名不会保留在数据库中.它被重命名为Image.jpg(在使用时简单地说出来).使用新图像替换现有图像时,名称也不会更改.只是图像文件的内容发生了变化.

网络服务器由托管服务/ ISP提供.它使用Apache.

有没有办法强制Web浏览器不缓存此页面中的内容,甚至图像?

我正在使用数据库实际"保存文件名"的选项.这样,如果图像被更改,IMG标签的src也将改变.但是,这需要在整个站点进行大量更改,如果我有更好的解决方案,我宁愿不这样做.此外,如果上传的新图像具有相同的名称(例如图像有点照片并重新上传),这仍然无效.

html caching image image-caching browser-cache

115
推荐指数
8
解决办法
19万
查看次数

C#中的C++联合

我正在将用C++编写的库翻译成C#,关键字"union"只存在一次.在结构中.

将它翻译成C#的正确方法是什么?它做了什么?它看起来像这样;

struct Foo {
    float bar;

    union {
        int killroy;
        float fubar;
    } as;
}
Run Code Online (Sandbox Code Playgroud)

c# c++ unions

70
推荐指数
3
解决办法
4万
查看次数

7
推荐指数
4
解决办法
3086
查看次数

找到两个连续的行

我正在尝试编写一个查询,它将从Bill表中撤消最近的两行,其中Estimated标志为true.问题在于这些需要是连续的账单.

简而言之,如果估算了最后两个账单周期的账单,我需要在另一个表格中输入一行.

如果可能的话,我想在没有光标的情况下这样做,因为我正在使用大量的数据,这必须经常运行.

编辑

表格上有一个AUTOINCREMENT(1,1)列.在没有放弃太多表结构的情况下,表基本上是结构:


CREATE TABLE Bills (
  BillId INT AUTOINCREMENT(1,1,) PRIMARY KEY,
  Estimated BIT NOT NULL,
  InvoiceDate DATETIME NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

所以你可能有一组结果,如:

BillId               AccountId            Estimated InvoiceDate
-------------------- -------------------- --------- -----------------------
1111196              1234567              1         2008-09-03 00:00:00.000
1111195              1234567              0         2008-08-06 00:00:00.000
1111194              1234567              0         2008-07-03 00:00:00.000
1111193              1234567              0         2008-06-04 00:00:00.000
1111192              1234567              1         2008-05-05 00:00:00.000
1111191              1234567              0         2008-04-04 00:00:00.000
1111190              1234567              1         2008-03-05 00:00:00.000
1111189              1234567              0         2008-02-05 00:00:00.000
1111188              1234567              1         2008-01-07 00:00:00.000
1111187              1234567              1 …

sql database sql-server

5
推荐指数
1
解决办法
3569
查看次数

有没有办法确定是否发生了异常?

在析构函数中,有没有办法确定当前是否正在处理异常?

c++ destructor exception-handling exception

1
推荐指数
1
解决办法
328
查看次数

Ruby on Rails - 为什么要使用测试?

我对Ruby on Rails中的各种测试设备的用途感到困惑.我已经使用该框架大约6个月,但我从来没有理解它的测试部分.我使用的唯一测试是Java中的JUnit3,而且只是简单的.

我读过的所有内容都只显示了测试验证.轨道中的验证不应该起作用吗?看起来更像测试框架而不是测试代码.为什么需要测试验证?

此外,对于代码中的任何更改,测试似乎都非常脆弱.因此,如果您更改模型中的任何内容,则必须更改测试和灯具以匹配.这不违反DRY原则吗?

第三,编写测试代码似乎需要很多时间.这是正常的吗?刷新我的浏览器并看它是否有效会不会更快?我已经不得不玩我的应用程序只是为了看它是否正确流动并确保我的CSS没有爆炸.为什么手动测试不够?

我之前已经问过这些问题而且我没有得到"自动化测试自动化".我足够聪明,可以找出自动化任务的优势.我的问题是,与好处相比,编写测试的成本似乎非常高.也就是说,任何详细的回复都是受欢迎的,因为我可能错过了一两个好处.

ruby testing ruby-on-rails

13
推荐指数
1
解决办法
1880
查看次数

在我开始使用它之前,我应该了解Git的哪些方面?

我使用"传统"版本控制系统来维护过去项目的源代码存储库.我正在与一个分布式团队开始一个新项目,我可以看到使用分布式系统的优势.鉴于我理解SourceSafe,CVS和Subversion; 你对Git新手有什么建议吗?

git version-control

9
推荐指数
2
解决办法
605
查看次数

如何在vim中设置UI语言?

我在reddit上看到了这个,它让我想起了我的一个vim抱怨:它用德语显示了UI .该死的,你!我想要英语,但由于我的操作系统是用德语设置的(我们办公室的标准),我想vim实际上是想帮助.

为了让vim切换UI语言,我必须执行哪些神奇的咒语?我曾尝试在各种场合使用谷歌搜索,但似乎无法找到答案(不,谷歌,你是我的朋友*拍*,*拍*,但我已经知道如何改变语法高亮,谢谢!) ...

编辑:使用下面的所有好的提示,我最终添加到我的顶部.vimrc(在Windows 7上运行Vim 7.2)

set langmenu=en_US.UTF-8    " sets the language of the menu (gvim)
language en                 " sets the language of the messages / ui (vim)
Run Code Online (Sandbox Code Playgroud)

vim user-interface

99
推荐指数
7
解决办法
6万
查看次数

使用自定义对象作为Microsoft Reports(.rdlc)的源

在某些情况下,我更喜欢使用自定义对象而不是强类型数据集和数据行.但是,似乎Microsoft报告(包含在VS2005中)需要强类型数据集.

有没有办法使用我的自定义对象来设计和填充报表?

reporting object rdlc

2
推荐指数
1
解决办法
1万
查看次数

当从本机win32应用程序调用C#COM程序集时,如何调试它?

我正在开发一个C#程序集,它将通过COM从Delphi 7(iow,原生win32,而不是.net)应用程序调用.

到目前为止,它似乎工作.我已经导出了一个TLB文件,将其导入到我的Delphi项目中,我可以创建我的C#对象并调用它的函数.

这很好,但很快我就真的想在运行时使用Visual Studio来调试C#代码.设置断点,逐步执行代码,所有这些.

在创建COM对象后,我尝试打破Delphi代码,然后寻找VS附加到的进程,但我找不到.

有没有办法设置VS2008这样做?我更愿意只能点击f5并让VS启动Delphi可执行文件,等待调用C#代码,然后将其自身附加到它上面.但我认为我可以手动附加到进程.

请不要告诉我,我必须使用MessageBox.Show等.

.net c# windows delphi com

8
推荐指数
2
解决办法
5348
查看次数