相关疑难解决方法(0)

172
推荐指数
4
解决办法
6万
查看次数

停止浏览器对应该保持缓存的图像发出HTTP请求 - mod_expires

在这里阅读了很多文章和一些问题后,我终于成功激活了Apache mod_expires,告诉浏览器它必须缓存1年的图像.

<filesMatch "\.(ico|gif|jpg|png)$">
  ExpiresActive On
  ExpiresDefault "access plus 1 year"
  Header append Cache-Control "public"
</filesMatch>
Run Code Online (Sandbox Code Playgroud)

谢天谢地,服务器响应似乎是正确的:

HTTP/1.1 200 OK 
Date: Fri, 06 Apr 2012 19:25:30 GMT 
Server: Apache 
Last-Modified: Tue, 26 Jul 2011 18:50:14 GMT 
Accept-Ranges: bytes 
Content-Length: 24884 
Cache-Control: max-age=31536000, public 
Expires: Sat, 06 Apr 2013 19:25:30 GMT
Connection: close
Content-Type: image/jpeg 
Run Code Online (Sandbox Code Playgroud)

好吧,我认为这会阻止浏览器下载甚至向服务器询问有关图像的信息,为期1年.但部分原因:如果您关闭并重新打开浏览器,浏览器不会再从服务器下载图像,但浏览器仍然会向每个图像发送HTTP请求来询问服务器.

如何强制浏览器停止为每个图像发出HTTP请求?即使这些HTTP请求后面没有下载的图像,它们仍然是向服务器发出的请求,这些请求可能会造成延迟,并减慢页面渲染速度!

我已经告诉浏览器它必须将图像保存在缓存中1年!为什么浏览器仍在为每个图像查询服务器(即使它没有下载图像)?!


查看FireBug中的网络图(菜单FireBug> Net> Images)我可以看到不同的缓存行为(我显然开始使用浏览器缓存完全空,我使用"清除所有历史记录"强制在浏览器上删除缓存):

  • 当第一次加载页面时,所有图像都被下载(如果我通过单击浏览器的重新加载页面按钮强制页面重新加载,则会发生同样的事情).这很有道理!

  • 当我浏览网站并返回同一页面时,根本不会下载图像,浏览器甚至不会向服务器询问 …

browser caching mod-expires http-headers

45
推荐指数
5
解决办法
3万
查看次数

Expires vs max-age,如果两者都在HTTP响应中声明,那么哪一个优先?

如果HTTP响应返回Expires和max-age指示哪一个使用?

Cache-Control: max-age=3600
Expires: Tue, 15 May 2008 07:19:00 GMT
Run Code Online (Sandbox Code Playgroud)

考虑到每个人都指的是不同的时间点.

http cache-control http-caching http-headers

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

使用哪一个:Expire Header,Last Modified Header或ETags

我在Apache上运行PHP,并对如何实现服务器端缓存感到困惑,以便加快网站加载速度.

是什么之间的区别Expires,Last-Modified以及ETag头,哪一个应该在什么情况下使用?

php etag apache2 last-modified mod-expires

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

PHP:检测页面刷新

我有一个页面action.php,我通过代码运行SQL查询,这样每当查看页面时,查询就像计算页面视图一样运行

<?php
mysqli_query("UPDATE ****");
?>
Run Code Online (Sandbox Code Playgroud)

问题是当刷新页面时,运行查询并将PAGE REFRESH计为我想要避免的PAGE VIEW.

   问题:如何避免它?

我正在寻找的是一个简单的解决方案,以便我可以检查

if( page was refresh ) //some condition
{
 do
}
Run Code Online (Sandbox Code Playgroud)

php refresh

18
推荐指数
5
解决办法
6万
查看次数

远期未来到期头和HTTP 304

我正在尝试优化网站的加载时间.我所做的一件事就是为静态内容设置一个远期期货过期标题,以便它们被缓存(如雅虎所描述的).但是,即使它们被缓存,浏览器仍会发送请求并返回该资源的304(未修改)响应.

我意识到304响应非常小并且可能具有最小的性能影响,但是有没有办法使浏览器不再发送请求而只是总是使用该资源的缓存?

http

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

LocalStorage,几个Ajax请求还是巨大的Ajax请求?

我面临一个非常大的问题(至少对我而言).我会给你一些背景知识.

我正在开发一个移动网络应用程序,它将显示我所在城市的公交车站和自行车站的信息.它将显示公共汽车和自行车停靠点的GMap标记,如果您点击它,您将获得有关公共汽车的到达时间或可用的自行车数量的信息.我有很好的涵盖.

有问题的部分是装载车站.

我的第一种方法是在页面加载时加载全部站点.它大约是200 Kb的JSON加上迭代数组并将其放入地图的时间.它们被隐藏加载,因此当用户点击行名称时,它们将使用"findMarker"函数显示.如果地图上存在其他工作站,则会隐藏它们以避免地图中有太多标记.

这适用于iPhone 4或全新HTC等新手机,但它在2年前的手机上表现不佳.

我想的第二种方法是按要求加载它们,所以你点击工作站,它们被加载到地图,然后显示但这导致两个问题:

  • 第一个是你可能(或可能不是)执行几个可能结束相同的请求(?)
  • 第二个是为了避免有这么多标记,它们应该被隐藏或删除,这样你可能会删除一段时间内应该再次需要的信息,比如作为一个组而不是一行加载的自行车站.

最后,我想过使用LocalStorage来存储它们,因为它们不会改变那么多,但是会有大量的数据然后,因为它们是关键值而难以检索它们(以及我我不太确定这一点.我发现不支持此功能的设备必须回退到其他选项之一.

所以,那就是说,我认为可能是某人面临一些类似的问题,并以某种方式解决了它或对我有一些提示:).

任何帮助将非常感激.

performance html5 json local-storage jquery-mobile

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

MVC的HTTP缓存 - Last-Modified响应头始终等于Date

我不完全理解.NET MVC的HTTP缓存是如何工作的,因为它似乎并没有真正检索缓存的资源文件.我想我需要在某处添加一些额外的代码......

首先,我们来看看我如何在静态内容(即图像)上设置HTTP缓存.在我的web.config中,我有以下内容:

<system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseExpires" httpExpires="Tue, 19 Jan 2038 03:14:07 GMT" />
    </staticContent>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

这导致我的应用程序中的图像看起来正确缓存.当我查看图像的响应标头时,我看到了这一点(删除了不必要的标头):

    Date:Thu, 27 Feb 2014 16:27:48 GMT
    ETag:"086f8d199a4ce1:0"
    Expires:Tue, 19 Jan 2038 03:14:07 GMT
    Last-Modified:Thu, 29 Aug 2013 09:26:20 GMT
Run Code Online (Sandbox Code Playgroud)

我看到一个好的ETag值,我的Expires应该是它的.此外,Last-Modified日期已过去.我理解上次修改日期是服务器上次要求该文件的日期.

现在让我们看一下由MVC优化的javascript文件的响应头.作为提醒,文章指出," 捆绑设置HTTP捆绑在创建时从Expires头一年. "

    Cache-Control:public
    Date:Thu, 27 Feb 2014 16:44:16 GMT
    Expires:Fri, 27 Feb 2015 16:44:16 GMT
    Last-Modified:Thu, 27 Feb 2014 16:44:16 GMT
    Vary:User-Agent
Run Code Online (Sandbox Code Playgroud)

MVC缓存文件的响应标头缺少ETag.Cache-Control值为"public",静态内容响应头上没有.最后,Expires是Last-Modified日期之后的1年,这是正确的,但Last-Modified日期始终与Date值相同.对我来说,这些响应标题看起来就像是第一次从服务器请求并缓存资源时的情况,而不是随后从缓存中请求和检索资源时的情况.

提前感谢您的任何见解.

更新:它实际上似乎是在IE中缓存.后续请求的上次修改日期仍为过去的值.不过,我在FF或Chrome中没有看到这一点.我确认在这两种浏览器中,我都没有禁用缓存.是什么赋予了?

asp.net-mvc http-headers expires-header

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

Etag和Expires标头有什么区别?

我知道这个问题有好几次了.但我仍然不清楚这个概念.在SO中阅读了很多博客和答案后,我得到的是,

Expiry headers are used when you don’t even want client (and proxies/caches) to make a request to  
the server. In ETAG, the client will check with the server for the update, but in expiry 
headers, the client will know, when to expire the file and check for an update, till then it
(browsers and proxies/caches) won’t bother server for checking the update.
Run Code Online (Sandbox Code Playgroud)

所以基本上它说如果我们使用expires/max-age标头,它甚至不会检查服务器是否有更新的文件.所以我想在本地进行测试.

所以我创建了简单的html文件,包括2个js文件和1个图像文件.在IIS中,我已将图像文件夹的Expires标头设置为2天.因此,根据我的理解,在从服务器获取图像文件一次后,对于下一个请求,它不应该向服务器发送请求以检查图像文件是否被修改.

但我得到的是每次刷新页面时,我看到发送到服务器的请求,服务器返回304 not modified状态.但根据我阅读的规格/博客它不应该向服务器发送请求.

有人请解释一下.

在此输入图像描述

etag http cache-control http-caching browser-cache

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

AFNetworking - 与ETag的请求

我正在尝试在服务器上执行请求,该服务器响应Etag以进行缓存.我为它编写了以下代码,但这些调用的响应在大多数情况下是随机的,即有时响应状态代码为200,有时为304(预期).我在代码中做错了什么,或者AFNetworking有什么特别的东西我应该记住.

  NSURL *url = [NSURL URLWithString:@"http://ia.media-imdb.com/images/M/MV5BNzI0NTY5NzQwMV5BMl5BanBnXkFtZTcwOTQyNTA5OA@@._V1._SY90_.jpg"];
  NSMutableURLRequest *aRequest = [NSMutableURLRequest requestWithURL:url];
  [aRequest setValue:@"\"61-smtLpBSL_SY90_#1\"" forHTTPHeaderField:@"If-None-Match"];
  NSLog(@"headers: %@", aRequest.allHTTPHeaderFields);
  AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:aRequest imageProcessingBlock:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    NSLog(@"%@ %d", response.allHeaderFields, response.statusCode);
  } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    NSLog(@"Request failed with error: %@", error);    
  }];
  [operation start];
Run Code Online (Sandbox Code Playgroud)

objective-c ios afnetworking

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

寻找我的服务器的自定义PHP Content Delivery Network(CDN)脚本

参考:https://en.wikipedia.org/wiki/Content_delivery_network

内容传送网络或内容分发网络是存储我们网站的计算机系统,因此可以从多个位置提供数据(图像/视频).但是,我不想使用任何在线付费/未付费CDN服务,但想在我自己的高速服务器上设置CDN.我做了很多谷歌,但没有看到任何这样的CDN脚本,我可以在我的服务器上安装.

我正在寻找可以支持高级缓存控制的脚本.

如果你知道用PHP开发的任何好的CDN脚本,请你分享一下吗?

php cdn content-delivery-network

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