Every byte that goes through the ALB is billed. Pricing is here. The AWS pricing page gives an example how to calculate pricing. Basically every connection, byte, and rule adds to the cost.
If you load resources from another server / domain that's not behind the ALB then that's not billed as it never touches the ALB - the client connects directly to the server hosting that resource. Setting up your caching headers properly and using a good CDN such as CloudFront (billed per MB) or CloudFlare (they have a free option) could reduce your costs for js, css, images, and other static resources. CloudFront and probably CloudFlare can cache dynamic pages if they're not customised per user, but the setup is a little more involved.
Here's the current info around LCU's from the Amazon page. You'll note it doesn't ditinguish between http parts of the message, it's "bytes processed"
An LCU measures the dimensions on which the Application Load Balancer
processes your traffic (averaged over an hour). The four dimensions
measured are:
New connections: Number of newly established connections per second.
Typically, many requests are sent per connection. Active connections:
Number of active connections per minute. Processed bytes: The number
of bytes processed by the load balancer in Gigabytes (GB) for HTTP(S)
requests and responses. Rule evaluations: It is the product of number
of rules processed by your load balancer and the request rate. The
first 10 processed rules are free (Rule evaluations = Request rate *
(Number of rules processed - 10 free rules) You are charged only on
the dimension with the highest usage. An LCU contains:
- 25 new connections per second.
- 3,000 active connections per minute.
- 1 GB per hour for EC2 instances, containers and IP addresses as targets and 0.4 GB per hour for Lambda functions as targets
- 1,000 rule evaluations per second.