刚刚将一些下载切换到Akamai CDN网络,我在他们提供的日志文件中看到了一些奇怪的东西.许多条目的状态代码为000.当我问他们时,他们说000是客户端在没有传输整个文件的情况下断开连接的状态.由于000似乎不是一个有效的HTTP响应代码(来自RFC),我不得不怀疑这是否正确.
希望有人可以帮助我或指出我正确的方向.
我被要求了解如何使Akamai(或任何其他CDN或NGINX)修改实际的响应体.
为什么?
我要让CDN将所有"http://"请求更改为"https://",而不是修改App代码以使用"//"来表示外部资源请求.
这可能吗?
谁知道?
必须提出将Amazon S3与CloudFront一起用作CDN的建议.其中一个重要的事情是进行成本估算.我阅读了AWS网站和论坛,使用了他们的计算器,但无法得出最终数字(大约),我将对此充满信心.老实说,我对"数据传输","GET和其他请求"等术语感到困惑,以及我是否需要在Amazon S3和Amazon CloudFront上填写详细信息,然后进行总计.
所以在这里需要帮助来估算我的每月账单.
大多数客户群(几乎95%)都在美国.
平均文件大小:500KB
如果我能更好地理解我的每月账单将如何计算以及它将会是什么,那将会很棒.
此外,根据上述数据和估算,如果我使用Akamai或Rackspace,则每月账单的数量是多少.
我目前使用Akamai作为CDN,但我注意到浏览器也在缓存内容.浏览器缓存images/css/js非常棒,但我想知道是否有一种方法可以不在浏览器上缓存,而是在Akamai中缓存.
现在,从我的起源开始,我发送这样的标题:
Cache-Control: public, must-revalidate, max-age=300
Expires: Sun, 19 Feb 2012 19:04:30 GMT
Date: Sun, 19 Feb 2012 18:59:30 GMT
Run Code Online (Sandbox Code Playgroud)
Akamai尊重这些标题,但也将它们传递给用户.这使得浏览器实际上也缓存了内容.
这在大多数情况下都很有用,但我们也有一些CDN逻辑,如果用户有登录的cookie,绕过CDN缓存并直接到源.
因此,如果让一个未经过验证的用户点击"登录",则会通过登录过程发送它们并返回到同一页面.即使CDN会从源页面请求此页面,浏览器实际上再次请求相同的页面,看起来好像登录没有工作.
现在,我可以强制登录过程添加一个查询参数,如?l = 1或者其他什么,但必须有更好的方法.
我很想知道Akamai是否可以将Cache-Control标头覆盖为硬编码的无缓存值,但我想知道是否有办法在源中执行此操作?
谢谢!
我有一个JSF2应用程序运行和工作没有问题.我与JSF的问题在于资源包.所有资源都.xhtml
附加了后缀.因此main.css
成为main.css.xhtml
在浏览器中加载时.我想拥有它所以.xhtml
不会依赖资源(不要介意页面本身).
是否有一个地方,我们可以一个方式不具有.xhtml
附加的资源呢?
理想情况下,我不必改变网站的内部运作.我在下面列出了一些想法,但我不得不说我不喜欢这些.希望在某个地方找到解决方案?
我在Glassfish 3.1.2.2上使用Majorra v.2.1.17.
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/javax.faces.resource/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
<link type="text/css" rel="stylesheet" href="/javax.faces.resource/main03.css.xhtml?ln=styles">
成为:<link type="text/css" rel="stylesheet" href="/javax.faces.resource/main03.css?ln=styles">
WITHOUT的.xhtml
扩展.当然你可能会问我为什么需要这个.好吧,我们正在推动我们的应用程序由Akamai CDN提供服务.
我们对网站集成的问题是我们正在尝试在边缘服务器上缓存静态内容.这是通过匹配文件扩展名(即:.js,.doc,.png,css等)来完成的.我们无法匹配,xhtml
因为这将缓存所有页面以及静态内容.这会导致会话等问题.
根据BalusC的回答,我按照建议实现了资源处理程序.我不会在这里重写代码,因为它在下面回答.
但是,我在加载复合组件时遇到错误.我这样得到一个错误:
WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:975) …
Run Code Online (Sandbox Code Playgroud) Akamai多久刷新一次缓存?
我们使用Akamai来缓存经常访问的文件.上传和覆盖文件到Akamai FTP时,我看不到实时反映的新文件.
有人有这方面的经验吗?
所以,我想在我的css和js文件中添加版本.我想这样做的方法是将一个查询字符串附加到资产路径的末尾
/foo/bar/baz.css
Run Code Online (Sandbox Code Playgroud)
变
/foo/bar/baz.css?version=1
Run Code Online (Sandbox Code Playgroud)
这将适用于代理和浏览器缓存,但是,我想知道Akamai是否会知道这是一个新文件并从原始服务器重新请求它?我的假设是它会从原始服务器重新请求该文件,但我想是否有人确切知道.
传统上,我会通过安装名为的Firefox扩展来检查Akamai标头akamaiheaders.xpi
.不幸的是,我认为最后一个支持Firefox的版本是3.
据我所知,这个插件会为Firefox发出的所有HTTP请求添加特殊标题,这会提示Akamai向响应中添加一堆标题(告诉我文件是否被缓存,它是从哪里得到的,等等) .然后,使用像HTTPFox或Firebug这样的工具,我可以很容易地看到哪些资产被缓存,哪些资产没有.
我已经搜遍了所有,但我找不到任何简单易用的东西.有没有人知道有什么允许我跟踪我的浏览器加载的所有资产的所有Akamai标题在FF,Chrome或Safari中有效?
我有一些通过内容分发网络提供的文件.从CDN服务器提供时,不会对这些文件进行gzip压缩.我想知道如果我在服务器端抓取内容,Akamai会先获取gzip压缩内容,然后在将内容存储到服务器上后再提供gzip压缩内容吗?
您好,我正在尝试抓取一个由 Akamai 提供支持的网站以进行机器人程序保护。由于 Akamai 阻止我的登录请求,我无法通过登录页面。
首先我想说的是,是的,有很多关于如何避免被 Akamai 等公司检测到的指南,但这些指南现在已经无关紧要,因为 Akamai 这样的公司通过使用 AI 检测新机器人而变得越来越好。
那么让我告诉您我的脚本正在运行的基础知识:
对于 Chrome 标志:
var chromeFlags = [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-accelerated-2d-canvas',
'--no-zygote',
'--renderer-process-limit=1',
'--no-first-run',
'--ignore-certificate-errors',
'--ignore-certificate-errors-spki-list',
'--disable-dev-shm-usage',
'--disable-infobars',
'--lang=en-US,en',
'--window-size=1920x1080',
'--disable-extensions'
];
Run Code Online (Sandbox Code Playgroud)
我还欺骗了时区和视口:
await page.emulateTimezone("Asia/Singapore");
await page.setViewport({width: (width/2)-21, height: height-111});
Run Code Online (Sandbox Code Playgroud)
据我所知,Akamai 非常了解窗口/屏幕尺寸。我已经做了我认为必要的一切来确保无头模式模仿实际的浏览器,但无济于事。
有一个网站可以显示您的浏览器指纹bot.sannysoft.com。我目前正在使用它来比较无头木偶师是否模仿实际的有头浏览器,到目前为止它看起来像是一个合法的浏览器。这是我用无头木偶师从该网站获得的结果
我希望有人能够告诉我是否应该尝试进行欺骗,以增加不被 Akamai 检测到的机会,或者指出我哪里做错了。
感谢大家!
akamai ×10
caching ×2
amazon-s3 ×1
browser ×1
cdn ×1
css ×1
ftp ×1
gzip ×1
header ×1
headless ×1
http ×1
http-caching ×1
http-headers ×1
java ×1
javascript ×1
jsf ×1
jsf-2 ×1
nginx ×1
performance ×1
puppeteer ×1